2012-11-01 45 views
0

我用perl,並通過這 - >追加爲Z

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」但那不是編譯。

回答

1

嘗試:

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

的%-letter部分是什麼獲取通過從時間的東西代替;一個文字Z在它之前不應該有%。

+0

非常感謝。這工作 – sbolla

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