`
taomac
  • 浏览: 7930 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Perl 时间日期处理

阅读更多

1. Perl中处理时间的函数
2. 将秒数转换为时间
3. 将时间转换为秒数
    a. 使用timegm/timelocal
    b. 使用Mktime

1. Perl中处理时间的函数有如下几种:
        1、time函数:返回从1970年1月1日起累计的秒数
             使用:my $t=time();
        2、 localtime函数:获取本地时区时间
             使用:my $t=localtime(time());
        3、gmtime函数: 获取格林威治时间
             使用:my $t=gmtime(time());
这里主要介绍第一二两种,格林威治时间暂时用不到,忽略。
time就是返回从1970年1月1日起累计的秒数
默认的 localtime 的函数是以 1970 到今天的秒来做整数计算的。默认这个程序会调用 time 的函数来给它提供一个值。
使用方法:

($sec, $min, $hour, $mday, $mon, $year, $wday, $yday, $isdst)=localtime;
$sec:秒 $min:分 $hour:小时 $mday:日 $mon:月 $year:目前的年减去1990,不是仅将19xx年的19去掉,因此不会有Y2K的困扰。 $wday:每周的日期(如Sunday是0) $yday:每年的日期(如Jan 1是0) $isdst:如果日光节约时间使用则是正值,其它为0。
localtime可以用unix time做参数,这样你可以指定获得几天前的时间了 localtime(time-3600*24*7)获得7天前的时间。

2. 将秒数转换为时间

上 面这个函数常用,但是返回值非常乱,可读性非常不好,让我们很容易出错,所以我推荐 strftime 这个时间函数。当然,还有另一个模块 DataTime 也相当不错。不过 strftime 非常象 Linux 常用的 date 的命令。strftime 是 C 中 POSIX 的一个功能函数。被包含进了 Perl 中。

使用起来很容易,如下:

#!/usr/bin/perl
use strict;
use warnings;
use POSIX qw(strftime);
print strftime("%Y-%m-%d %H:%M:%S\n", localtime(time));
会输出 :
2010-08-21 07:44:24

Strftime 时间域  这个和 date 的命令的字符格式是一样的)
% H 小时(00..23)
% I 小时(01..12)
% k 小时(0..23)
% l 小时(1..12)
% M 分(00..59)
% p 显示出AM或PM
% r 时间(hh:mm:ss AM或PM),12小时
% s 从1970年1月1日00:00:00到目前经历的秒数
% S 秒(00..59)
% T 时间(24小时制)(hh:mm:ss)
% X 显示时间的格式(%H:%M:%S)
% Z 时区 日期域
% a 星期几的简称( Sun..Sat)
% A 星期几的全称( Sunday..Saturday)
% b 月的简称(Jan..Dec)
% B 月的全称(January..December)
% c 日期和时间( Mon Nov 8 14:12:46 CST 1999)
% d 一个月的第几天(01..31)
% D 日期(mm/dd/yy)
% h 和%b选项相同
% j 一年的第几天(001..366)
% m 月(01..12)
% w 一个星期的第几天(0代表星期天)
% W 一年的第几个星期(00..53,星期一为第一天)
% x 显示日期的格式(mm/dd/yy)
% y 年的最后两个数字( 1999则是99)
% Y 年(例如:1970,1996等)



3. 将时间转换为秒数

a. 使用timegm/timelocal
#!/usr/bin/perl
use Time::Local;
my $string = '2011-9-30 8:20:34';
my ($year,$month,$date,$hour,$minute,$second);
if($string=~ m/(\d+)-(\d+)-(\d+)\s(\d+):(\d+):(\d+)/){
$year = int $1;
$month = int $2 - 1;
$date = int $3;
$hour = int $4;
$minute = int $5;
$second = int $6;
}
print ("The date string is: $string\n");
$string = timelocal( $second,$minute,$hour,$date,$month,$year);
print "Number is $string\n";
my $date = localtime $string;
print "After changed, date is $date\n";
b. 使用Mktime
  perl有个date::calc
  使用Mktime函数,可以得到当前时间到1971-01-01   00:00:00之间的秒数

 

分享到:
评论

相关推荐

    perl语言对时间进行处理

    在Perl编程语言中,时间处理是一项非常重要的功能,它能够帮助开发者轻松地处理各种与日期、时间和时区相关的任务。本文将详细介绍如何使用Perl来处理时间,包括获取当前时间、格式化时间以及进行时间戳的操作等。 ...

    perl获取文件修改时间

    在IT领域,Perl作为一种强大的脚本语言,被广泛应用于系统管理、网络编程、文本处理以及各种自动化任务中。其中,获取文件的修改时间是Perl在文件操作中的一个常见且实用的功能,尤其对于需要监控文件更新状态或进行...

    Perl时间处理函数用法介绍

    Perl时间处理函数是Perl编程语言中用于管理日期和时间的核心工具。这些函数允许开发者方便地进行日期和时间的计算、格式化以及与操作系统交互。在Perl中,时间通常以“纪元秒”(Unix时间戳)的形式存储,即从1970年...

    perl_TimeDate.rar_activeperl timeda_perl TimeDate_perl Timeda_pe

    在实际开发中,结合这些功能,你可以编写出处理时间日期问题的强大脚本。 在标签中提到的"timeda_perl"和"perl-timeda"可能是对"Time::Date"的另一种拼写或缩写。"perl_timedate"和"timeDate_perl"可能是指这个模块...

    Perl开发环境.zip

    同时,熟悉一些常用模块如`DateTime`(日期和时间操作)、`DBI`(数据库接口)、`LWP::UserAgent`(HTTP客户端)等将大大提升开发效率。 总之,"Perl开发环境.zip" 提供了一个便捷的方式在Windows环境下搭建Perl...

    PERL perl_add_ons 3

    Perl的模块通常遵循一种模块化的设计思想,这意味着每个模块都专注于一个特定的任务,比如网络通信、数据库连接、日期和时间处理等。在"perl_add_ons 3"中,我们可能找到了处理XML数据的模块,如`XML::Simple`,用于...

    神奇的perl例子perl例子100个

    13. **时间和日期**:Perl提供了处理时间和日期的内建函数,如`localtime`、`gmtime`和`Time::Piece`模块。 14. **位操作**:Perl也支持位级别的操作,如`&`、`|`、`^`等,用于处理二进制数据。 这些例子可能会...

    历史天气数据获取perl代码

    在描述中提到,“用perl写的一个获取历史天气数据的代码,更新时间是2011 10月 1日”,这暗示了该代码可能从特定的在线资源或API抓取天气数据,可能涉及到网络请求、数据解析和日期处理等技术。代码的更新时间是2011...

    perl-scripts

    文件名列表"perl scripts"没有提供具体的文件名,但通常一个Perl脚本库会包含各种示例,比如文件I/O操作、网络请求、数据库交互、日期和时间处理、XML或JSON解析等。在这些脚本中,你可以学习如何打开、读取、写入或...

    日期操作,转日期格式,加减日期,日期详解

    无论是记录系统日志,处理用户输入,还是进行数据分析,都离不开对日期的处理。本篇文章将详细探讨日期操作、转日期格式以及加减日期的技巧。 首先,让我们来看看“日期操作”。在编程中,日期通常被表示为特定的...

    Intermediate PERL

    - **文本处理**:Perl强大的正则表达式功能使得它在文本处理方面表现出色。 总之,《中级Perl》是一本非常适合有一定Perl基础的读者进一步提升技能的书籍。通过阅读本书,读者不仅可以深入了解Perl的各种高级特性,...

    perl_library(1).zip

    例如,Text::CSV模块可以帮助处理CSV数据,Crypt::CBC则提供了加密功能,而DateTime库则方便日期和时间的处理。 在开发过程中,理解并熟练运用这些库是提升Perl编程技能的关键。通过深入研究"perl_library(1).zip" ...

    perl gui 日志分析工具

    在"perl gui日志分析工具"中,开发者可能利用了其中的一种或多种模块,结合Perl的文本处理能力,实现了日志的导入、筛选、排序和可视化功能。 日志分析是系统管理员和开发者日常工作中的一项重要任务。通过对日志...

    bugzilla的perl模块

    6. **Time::Zone** 和 **DateTime**:处理日期和时间,这对于跟踪问题的创建、修改时间以及到期日等非常重要。 7. **Authen::SASL** 和 **Net::SMTP::SSL**:这些模块支持安全的SMTP身份验证和加密,确保Bugzilla的...

    perl 初级教程及高级技术内幕

    例如,`DBI`模块用于数据库操作,`LWP::UserAgent`模块用于网络请求,`DateTime`模块处理日期和时间。学习如何安装和使用这些模块将大大提升你的编程能力。 另外,面向对象编程(OOP)也是Perl高级技术的一部分。...

    UTC2Time utc秒数时间与日期时间转换工具

    总的来说,UTC2Time是一个基于Perl的实用工具,解决了在UTC秒数和日期时间之间转换的难题,简化了日常IT工作中的时间处理任务。对于熟悉Perl的用户来说,源代码或许还能提供学习和定制的机会,以适应更具体的需求。

    Intermediate.Perl(chm + pdf )

    - `Gettext`库的使用,实现程序的本地化,包括消息翻译和日期/时间格式化。 9. **性能优化** - 代码审查技巧,找出性能瓶颈并进行优化。 - 使用` Benchmark`模块进行性能测试,以及如何避免不必要的计算和数据...

    Sams Teach Yourself Perl in 21 Days

    - **格式化输出**:通过特定函数可以控制输出格式,例如日期时间的格式化。 ##### 3. 高级标量数据操作与运算符 - **运算符**:包括算术运算符、赋值运算符、比较运算符等。 - **位运算**:Perl支持按位与、或、...

    Perl.Cookbook

    - **日期时间表示**:介绍Perl中日期时间的不同表示方法。 - **日期时间操作**:探讨如何进行日期时间的加减运算、格式化输出等。 - **时区处理**:讨论Perl处理不同时区的方法,以及相关模块的使用。 - **时间戳...

Global site tag (gtag.js) - Google Analytics