Jua*_*rro 32 perl datetime parsing
我知道DateTimePerl模块,以及许多DateTime::Format::解析特定日期/时间格式的模块.但是,考虑到日期/时间字符串的一些示例,我如何计算(在编码/设计时,而不是在运行时)我应该使用哪个特定模块?
例如,我想解析字符串,如: October 28, 2011 9:00 PM PDT
是否有一个最常见的日期/时间格式的列表,我可以查看它,找到哪个是最合适的模块?
我也知道一些模块试图在运行时"猜测"每个给定字符串的格式并尽力而为.但是,对于敏感应用程序,我想在设计应用程序时首先确定(尽可能严格)格式,然后使用一个模块,如果字符串与指定的格式不匹配,它将发出警告.
我该怎么办呢?
Dav*_*oss 43
DateTime :: Format :: Strptime获取日期/时间字符串并将它们解析为DateTime对象.
#!/usr/bin/perl
use strict;
use warnings;
use DateTime::Format::Strptime;
my $parser = DateTime::Format::Strptime->new(
pattern => '%B %d, %Y %I:%M %p %Z',
on_error => 'croak',
);
my $dt = $parser->parse_datetime('October 28, 2011 9:00 PM PDT');
print "$dt\n";
Run Code Online (Sandbox Code Playgroud)
模式中使用的字符序列是POSIX标准.有关详细信息,请参阅'man strftime'.
Dav*_* W. 30
我倾向于使用Time :: Piece,因为它是自5.10版以来标准Perl模块集的一部分.
你无法击败它解析日期字符串的能力.
my $time = Time::Piece->strptime(
"October 28, 2011 9:00 PM PDT",
"%B %d, %Y %r %Z");
Run Code Online (Sandbox Code Playgroud)
Eri*_*ikR 13
看看Date::Parse模块,即str2time()功能.它支持大多数常用格式.
例:
use Date::Parse;
use DateTime;
my $str = "Tue, 20 Sep 2011 08:51:08 -0500";
my $epoch = str2time($str);
my $datetime = DateTime->from_epoch(epoch => $epoch);
Run Code Online (Sandbox Code Playgroud)