如何将dd / MMM / yy hh:mm AM / PM转换为iCal事件格式?

时间:2012-01-23 19:07:44

标签: perl date icalendar

我有这种格式的日期时间列表:

05/Jan/12 8:00 AM

这一天总是两位数,但小时可以是一位数或两位数。

我想将其转换为iCal格式:

20120105T080000Z

是否有模块可以执行此操作?

2 个答案:

答案 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::StrptimeDateTime::Format::ICal的组合来实现。

此外,您的输出显示为UTC / GMT(由尾随'Z'表示),但您的输入未指定时区。因此,作为解决方案的一部分,您需要指定输入时间应解释的时区。

另见http://datetime.perl.org/wiki/datetime/page/Modules

相关问题