Jim*_*dra 7 perl datetime iso8601 unix-timestamp
给定一个表示ISO8601格式的日期/时间的字符串(例如20100723T073000),我需要使用通用strftime格式字符串最终将其解析为用户提供的格式.为此,我需要将ISO8601时间戳转换为Unix时间戳.Perl有大量的日期/时间操作模块,我有点不知所措.有关如何做到这一点的任何建议?
Eth*_*her 13
处理日期,时间,持续时间,时区和格式的冠军模块是DateTime.获得DateTime对象后,可以对其执行大量操作,例如添加/减去其他DateTime对象或DateTime :: Duration对象,或以其他格式打印出来.
use strict; use warnings;
use DateTime;
use DateTime::Format::ISO8601;
my $dt = DateTime::Format::ISO8601->parse_datetime('20100723T073000');
print $dt->strftime('%F %T');
Run Code Online (Sandbox Code Playgroud)
打印:"2010-07-23 07:30:00"
如果您没有或不想安装该DateTime::Format::ISO8601模块,您可以使用以下命令解析至少 ISO8601 的一个子集HTTP::Date:
$ perl -MHTTP::Date -wle 'print str2time("2013-11-30T23:05:03")'
1385845503
Run Code Online (Sandbox Code Playgroud)
与任何日期处理一样,请注意时区问题。