为什么Perl的POSIX :: strftime%F说明符在Windows上不起作用?

我是parsingApple属性列表格式的Mac :: PropertyList模块的作者。 我已经devise了这个跨平台的工作,但我遇到了POSIX的strftime函数的麻烦,我使用这个函数来创build苹果指定格式的date字段。

 use POSIX; print 'Epoch is: ' . POSIX::strftime( "%FT%H:%M:%SZ\n", gmtime(978307200) ); 

在类似unix的平台上,包括达尔文,这个调用产生了正确的date:

 2013-09-23T12:34:56Z 

Windows上,它产生:

 T12:34:56Z 

这被报告为CPAN RT#83460 。 这里用Windows怎么回事?

Solutions Collecting From Web of "为什么Perl的POSIX :: strftime%F说明符在Windows上不起作用?"

当我写这个问题和研究一切,我找到了自己的答案。 我不希望所有这些工作都浪费掉。

我使用的%F格式不是可移植的, POSIX模块在strftime条目中说:

 If you want your code to be portable, your format ("fmt") argument should use only the conversion specifiers defined by the ANSI C standard (C89, to play safe). These are "aAbBcdHIjmMpSUwWxXyYZ%". 

%F实际上是%Y-%m-%d ,所以我应该使用它。

我特别的问题是,我知道POSIX模块告诉你可以使用哪些格式说明符是可移植的,但是我仍然需要看看strftime手册页来看看他们做了什么。 在查看手册页时,我忘记检查哪些是便携式的。