2014-09-30 61 views
0

我試圖讓使用strftime perl中的當前時間,但它不給我我想要的形式的時區。據此:http://search.cpan.org/~dexter/POSIX-strftime-GNU-0.02/lib/POSIX/strftime/GNU.pm,%z用於形式「-0700」,並且我看到%:z給出的形式爲「-07:00」,這是理想的。strftime時區給出的單詞形式,而不是偏移

但%z給我的時區名稱,%:z甚至不工作。

use POSIX qw/strftime/; 

    #This prints "2014-09-30T12:54:11-Pacific Daylight Time" 
    print strftime("%Y-%m-%dT%H:%M:%S-%z\n", localtime(time)); 

    #This doesn't print anything 
    print strftime("%Y-%m-%dT%H:%M:%S-%:z\n", localtime(time)); 

    #What I want: "2014-09-30T12:54:11-07:00" 
+0

在您的系統中,'man 3 strftime'對'%z'說什麼?或者說,它說你需要使用什麼?這是你正在使用的功能。 – ikegami 2014-09-30 20:02:31

+4

你沒有使用'POSIX :: strftime :: GNU',那你爲什麼要引用它的文檔? – ikegami 2014-09-30 20:03:01

回答

1

POSIX :: strftime使用您的操作系統的底層strftime庫。因此,您可以使用的選項列在您本地的聯機幫助頁中。正如POSIX documentation說:

諮詢系統的strftime()用戶手冊以瞭解這些和 其他參數的詳細信息。

這可能是「男人strftime」。

我使用的是Ubuntu 14.04,我得到了預期的結果。

$ perl -MPOSIX=strftime -E'say strftime("%z", localtime)' 
+0100 

您需要仔細觀察當地實施strftime