我有这种格式的日期时间列表:
05/Jan/12 8:00 AM
这一天总是两位数,但小时可以是一位数或两位数。
我想将其转换为iCal格式:
20120105T080000Z
是否有模块可以执行此操作?
答案 0 :(得分:4)
Time::Piece核心模块就足够了:
#!/usr/bin/env perl
use strict;
use warnings;
use Time::Piece;
my $str = q(05/Jan/12 8:00 AM);
my $t = Time::Piece->strptime($str,"%d/%b/%y %I:%M %p");
print $t->datetime, "\n";
这假定您的本地时间并在输出中包含破折号:
2012-01-05T08:00:00
答案 1 :(得分:2)
应该可以使用DateTime::Format::Strptime和DateTime::Format::ICal的组合来实现。
此外,您的输出显示为UTC / GMT(由尾随'Z'表示),但您的输入未指定时区。因此,作为解决方案的一部分,您需要指定输入时间应解释的时区。