21

私はおそらく対応すべき明らかなプラットフォームの違いを見逃していますが、時間形式(Python2.7)を実行しようとするとこれが発生します...

Linux 環境で:

>>> import time
>>> time.strftime("%a, %d-%b-%Y %T GMT", time.gmtime())
'Tue, 29-May-2012 21:42:04 GMT'

Windows の場合:

>>> import time
>>> time.strftime("%a, %d-%b-%Y %T GMT", time.gmtime())
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ValueError: Invalid format string

time.gmtime() から返されたタプルは同じように見えるので、何を変更する必要があるか完全にはわかりません。

4

3 に答える 3

20

time.strftime()一般に、Pythonは、それが実行されるプラットフォーム (より具体的にはそのプラットフォームの libc) と同じ形式指定子のセットをサポートしていることがわかります。ただし、これらのサブセットのみが移植可能です。リストについては、 http://docs.python.org/library/time.htmlを参照してください。ドキュメントを引用するには:

特定のプラットフォームでは追加のディレクティブがサポートされている場合がありますが、ANSI C によって標準化された意味を持つのは、ここにリストされているディレクティブのみです。

この場合、%Tに置き換えることができます%H:%M:%S

于 2012-05-29T21:51:05.607 に答える
0

MacOSがサポートしているため、この問題が発生していることがわかり、クロスプラットフォームにするために"%D"それを置き換える必要がありました。一般に、 やのような「集約」文字列を使用するよりも、"%m/%d/%Y"「単純な」書式文字列を組み合わせた方が安全なようです。%m%T%D

于 2016-09-14T14:39:04.887 に答える
0

Python のドキュメントにリストされている%Tformat ディレクティブが表示されません - Windows プラットフォームで使用可能/実装されていてはなりません (私は今 Python v2.7.3 と 3.2.3 の両方で試しました)。

于 2012-05-29T21:53:45.650 に答える