Perl日期和时间

本文概述

  • Perl localtime()
  • Perl创建时间戳
  • Perl GMT时间, gmtime()
  • Perl时代时间
  • Perl POSIX函数strftime()
  • Perl显示日期和时间
【Perl日期和时间】在Perl中处理日期和时间的最合适方法是使用DateTime模块。
在执行日期和时间的每个操作之前, 我们需要通过脚本将DateTime加载到内存中。
use DateTime;

Perl localtime()如果不带任何参数使用localtime()函数, 则会根据系统返回当前日期和时间。
#!/usr/local/bin/perl$datetime = localtime(); print "Current date and time according to the system : $datetime\n";

输出
Current date and time according to the system : Fri Jan 6 11:52:04 2017

Perl创建时间戳可以通过立即调用构造函数来创建一个显示当前日期和时间的DateTime对象。
例:
use DateTime; my $datetime = DateTime-> now; print "$datetime\n";

输出
2017-01-06T06:29:38

我们还可以通过部分提供所有详细信息(例如日期, 分钟, 秒等)来创建DateTime对象。perl将假定数据为” 0″ , 而不会传递任何详细信息。
例:
use DateTime; $datetime = DateTime-> new(day=> 18, month=> 7, year=> 2003, hour=> 12, ); print"$datetime\n";

输出
2003-07-18T12:00:00

在上面的输出中, 我们在第二部分和第二部分都没有传递任何细节。因此, Perl假定它为零。
Perl GMT时间, gmtime()此函数的工作方式与localtime()函数类似, 只是gmtime()返回值已针对标准格林威治时区进行本地化。
#!/usr/local/bin/perl$gmt = gmtime(); print "$gmt\n"; $local = localtime(); print "$local\n";

输出
Fri Jan 6 08:43:31 2017Fri Jan 6 14:13:31 2017

Perl时代时间纪元时间是指特定日期和时间之后的秒数。此特定日期和时间因不同的操作系统而异。例如, 对于Unix, 它是1970年1月1日。由于所有操作系统具有不同的纪元时间, 因此你不能假定一个系统与另一个系统的纪元时间。
#!/usr/local/bin/perl$epoch = time(); print "$epoch\n";

输出
1483686914

Perl POSIX函数strftime()Perl POSIX strftime()函数用于格式化日期和时间, 并在说明符前加(%)符号。说明符有两种类型, 一种用于本地时间, 另一种用于gmt时区。
本地说明符
Specifier Used For Example
%a 简短地表示工作日名称 Sun
%A 代表完整的工作日名称 Sunday
%b 简写代表月份名称 Jul
%B 代表完整的月份名称 July
%c 代表日期和时间 2017年1月6日星期五12:34:07
%h 缩写表示月份名称, 与%b相同 Jul
%r 12小时制时钟 6:15:30 pm
%x Represent date 12/28/12
%X 代表时间 15:34:06
%Z 代表时区
GMT指标
Specifiers 用于 Example
%C 年份除以100并以整数表示(00-99) 34
%d 每月的某天, 零填充(01-31) 33
%D Represents MM/DD/YY 07/18/17
%e 每月的某天, 填充了空格(1-31) 33
%F Represents YYYY-MM-DD 2017/07/18
%g 基于周的年份, 最后两位数字(00-99) 05
%g 基于周的年份 2015
%H 24小时制的小时 17
%I 12小时制小时 05
%J 一年中的哪一天(001-366) 365
%m 以十进制数字表示的月份(01-12) 07
%M Minute (00-59) 35
%n 换行符
%p 上午或下午 AM
%R HH:MM时间以24小时格式 17:55
%S 塞康(00-59) 45
%吨 水平制表符
%T ISO 8601时间格式(HH:MM:SS) 21:45
%u ISO 8601工作日, 从星期一(1-7)开始为数字
%U 第一周的第一天为第一个星期日的星期几(00-53)
%V ISO 8601周编号(00-53)
%w 工作日为从星期日开始的十进制数字(0-6)
% W 将第一个星期一作为第一个星期的第一天的星期数(00-53) 17
%y 一年的后两位数字(00-99) 2017
%Y 全年
%z 时区中UTC的ISO 8601偏移量(1分钟= 1, 1小时= 100) +100
%% 一个牌子 %
Perl显示日期和时间有时我们需要以不同的格式显示日期或时间。为此, 我们可以如下所示在Perl中更改格式。
例:
#!/usr/bin/env perluse strict; use warnings; use 5.010; use DateTime; my $datetime = DateTime-> new(day=> 18, month=> 7, year=> 2003, hour=> 12, minute=> 00, second=> 00, ); say $datetime; say $datetime-> ymd; say $datetime-> ymd('_'); say $datetime-> hms; say $datetime-> epoch; say $datetime-> year; say $datetime-> month; say $datetime-> day; say $datetime-> strftime( '%Y-%m-%d-%H-%M-%S' );

输出
2003-07-18T12:00:002003-07-1818-07-200312:00:00105852960020037182003-07-18-12-00-00

    推荐阅读