代码很不错,但正确的方向也很好。
CPAN?正则表达式?
我见过两种方式
“YYYY-MM-dd'T'HH:MM:SSZ”;
“YYYY-MM-DDTHH:MM:SSZ”;
答案 0 :(得分:11)
Ether使用DateTime肯定在正确的轨道上。使用DateTime,您可以确定您有一个实际存在的时间,如果您自己编写支票,2000年2月29日的某些内容可能会消失。
您的格式看起来像ISO8601字符串。因此,使用DateTime::Format::ISO8601进行解析。
use DateTime;
use DateTime::Format::ISO8601;
my $string = '2010-02-28T15:21:33Z';
my $dt = DateTime::Format::ISO8601->parse_datetime( $string );
die "Impossible time" unless $dt;
您可以使用其他格式模块,例如D::F::Strptime,但您最终会重新创建ISO8601格式化程序已经完成的工作。
答案 1 :(得分:4)
根据您正在做的事情,您可能希望将您的字符串强制转换为DateTime对象,例如:
use DateTime::Format::MySQL;
my $dt = DateTime::Format::MySQL->parse_datetime( '2003-01-16 23:12:01' );
然后,您可以轻松地以不同的格式输出时间字符串,使用它执行计算等。
您没有指定以该特定格式生成字符串的内容,但是有大量输入源的DateTime :: Format :: modules。