Perl教程
Perl控制语句
Perl高级

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 创建时间戳

可以通过调用now构造函数来创建显示当前日期和时间的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 2017
Fri 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 时区。

本地说明符

说明符 用于 示例
%a 简写代表工作日名称 太阳
%A 代表完整的工作日名称 星期日
%b 简写代表月份名称 七月
%B 代表完整的月份名称 七月
%c 表示日期和时间 2017 年 1 月 6 日星期五 12:34:07
%h 简写表示月份名称,同%b 七月
%r 12 小时制时钟时间 下午 6:15:30
%x 表示日期 12/28/12
%X 表示时间 15:34:06
%Z 代表时区

GMT 说明符

说明符 用于 示例
%C 年份除以 100 并以整数(00-99) 表示 34
%d 一个月中的某一天,补零(01-31) 33
%D 代表MM/DD/YY 07/18/17
%e 月份中的第几天,空格填充(1-31) 33
%F 代表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 分钟(00-59) 35
%n 换行符
%p 上午或下午 上午
%R HH:MM 24 小时制时间 17:55
%S Secone(00-59) 45
% t 水平制表符
%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 ISO 8601 时区与 UTC 的偏移量(1 分钟 = 1,1 小时 = 100) +100
%% % 符号 %

Perl 显示日期和时间

有时我们需要以不同的格式显示日期或时间。为此,我们可以更改 Perl 中的格式,如下所示。
示例:
#!/usr/bin/env perl
use 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:00
2003-07-18
18-07-2003
12:00:00
1058529600
2003
7
18
2003-07-18-12-00-00
昵称: 邮箱:
Copyright © 2022 立地货 All Rights Reserved.
备案号:京ICP备14037608号-4