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 に答える