本文概述
- Perl localtime()
- Perl创建时间戳
- Perl GMT时间, gmtime()
- Perl时代时间
- Perl POSIX函数strftime()
- Perl显示日期和时间
在执行日期和时间的每个操作之前, 我们需要通过脚本将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 | 代表时区 |
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 |
%% | 一个牌子 | % |
例:
#!/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
推荐阅读
- Perl命令行参数
- Perl数据类型
- Perl使用注释
- Perl chop()和chomp()
- 带循环的Perl数组
- Perl数组用法详解
- Java使用正则表达式验证日期格式
- PHP date_create_from_format()函数用法示例解析
- Python使用Pandas处理日期和时间