我正在使用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”但不编译。
答案 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