2013-09-24 31 views
8

我是分析Apple屬性列表格式的Mac::PropertyList模塊的作者。我設計了這個平臺,但我在POSIXstrftime函數中遇到問題,我使用該函數以Apple指定的格式創建日期字段。爲什麼Perl的POSIX :: strftime%F說明符在Windows上不起作用?

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

在類Unix平臺,包括達爾文,這個調用產生正確的數據排序的:

2013-09-23T12:34:56Z 

在Windows上,它產生:

T12:34:56Z 

據報道,這是CPAN RT #83460 。這裏的Windows正在發生什麼?

回答

12

當我寫這個問題和研究一切時,我找到了自己的答案。我不希望所有這些工作都浪費掉。

我使用的%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手冊頁以查看它們的功能。在查看手冊頁時,我忘記檢查哪些是便攜式的。

相關問題