strftime timezone给出单词形式而不是偏移量

时间:2014-09-30 20:01:10

标签: perl posix

我试图使用strftime获取perl中的当前时间,但它并没有以我想要的形式给我时区。根据这个:http://search.cpan.org/~dexter/POSIX-strftime-GNU-0.02/lib/POSIX/strftime/GNU.pm,%z用于表格" -0700",我看到了%:z给出形式" -07:00"这将是理想的。

但是%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"

1 个答案:

答案 0 :(得分:1)

POSIX :: strftime使用您的操作系统底层strftime库。因此,您可以使用的选项列在您的本地联机帮助页中。正如POSIX documentation所说:

  

有关这些和的详细信息,请参阅系统的strftime()联机帮助页   其他论点。

可能" man strftime"。

我正在使用Ubuntu 14.04,我得到了预期的结果。

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

您需要仔细查看strftime的本地实施。