2014-09-30 52 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