2013-09-24 9 views
8

私はアップルプロパティリスト形式を解析するMac::PropertyListモジュールの著者です。私はこれをプラットフォーム間で動作させるように設計しましたが、POSIXstrftime関数でAppleが指定した形式で日付フィールドを作成する際に問題があります。ダーウィンを含むUnixライクなプラットフォームでは、PerlのPOSIX :: strftime%F指定子がWindows上で動作しないのはなぜですか?

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

、この呼び出しは、日付の右の一種生成します。Windowsの

2013-09-23T12:34:56Z 

を、それが生成します。これはCPAN RT #83460として報告された

T12:34:56Z 

。ここで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 manページを見ています。マニュアルページを見ると、どのページが移植性があるのか​​を忘れてしまいます。