在UTC时间结束时附加Z.

时间:2012-11-01 18:49:39

标签: perl

我正在使用perl,并传递了这个 - >

DateTime->now( time_zone => 'UTC' )) to the method below

sub get_datetime{
    my ($datetime) = @_;
    my $formatter = new DateTime::Format::Strptime(pattern => "%Y-%m-%d %H:%M:%S",
                       time_zone => "UTC");
    return $formatter->format_datetime($datetime);
}

我希望显示时间,如2012-10-10 10:00:01Z

如何在UTC时间末尾添加Z?我试过了 pattern => “%Y-%m-%d%H:%M:%S%Z”但不编译。

2 个答案:

答案 0 :(得分:1)

尝试:

pattern => "%Y-%m-%d %H:%M:%SZ"

%-letter部分是被当时的东西取代的东西;文字Z在它之前不应该有%。

答案 1 :(得分:0)

我很惊讶%Z阻止您的代码编译。您收到了什么错误消息?

%Z是用于获取时区的正确格式,但它将以与您想要的格式不同的格式显示。

$ perl -MDateTime -E'say DateTime->now->strftime("%Y-%m-%d %H:%M:%S%Z")'
2012-11-02 13:56:05UTC

另一种选择是使用%z。但同样,这并没有给出你想要的格式。

$ perl -MDateTime -E'say DateTime->now->strftime("%Y-%m-%d %H:%M:%S%z")'
2012-11-02 13:57:00+0000

所以,是的,看起来硬编码“Z”是你最好的选择。但是这让我有点不舒服,因为你如何确定你的日期实际上是UTC?

$ perl -MDateTime -E'say DateTime->now->set_time_zone("America/New_York")->strftime("%Y-%m-%d %H:%M:%SZ")'
2012-11-02 10:01:56Z