如何将日期时间转换为其他格式? [perl的]

时间:2011-02-19 22:40:32

标签: perl datetime

需要帮助解析日期时间戳并按日期和时间将其拆分。

use strict;
use warnings;
use Time::Piece;

my $string = "05:57:03 08/31/10 MDT";

print $string,"\n";

my $time = Time::Piece->strptime($string, "%H:%M:%S");
my $date = Time::Piece->strptime($string, "%Y/%m/%d");

print $time,$date,"\n";

谢谢! 另外,我如何确定这周使用代码的哪一天?

2 个答案:

答案 0 :(得分:7)

use DateTime::Format::Strptime;
my $s  = DateTime::Format::Strptime->new(pattern => '%T %D %Z');
my $dt = $s->parse_datetime('05:57:03 08/31/10 MDT');
say $dt->strftime('%A'); # Tuesday

答案 1 :(得分:3)

您应该可以使用以下代码:

my $t = Time::Piece->strptime($string, "%H:%M:%S %m/%d/%y %Z");

但是,至少在我的系统上,我必须将时区MST更改为GMT才能匹配;如果我在你的例子中留下它,我会收到一个错误:

Perl> my $t = Time::Piece->strptime("05:57:03 08/31/10 DST", "%H:%M:%S %m/%d/%y %Z");
[!] Runtime error: Error parsing time at /usr/local/lib/perl/5.10.0/Time/Piece.pm line 469.

如果它适用于您,您将拥有一个Time :: Piece对象,您可以在其上调用,例如{@ 1}}表示星期几作为数字,$t->day_of_week表示例如'星期二'或$t->day例如'星期二'。

有关您可以致电的方法的详细信息,请参阅Time::Piece的文档。