0

我正在使用 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" 但那没有编译。

4

2 回答 2

1

尝试:

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

% 字母部分是从那时起被事物所取代的;文字 Z 之前不应有 % 。

于 2012-11-01T18:51:39.193 回答
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
于 2012-11-02T14:02:16.480 回答