Форматирование времени Python в Windows

Мне, вероятно, не хватает очевидной разницы в платформе, которую я должен размещать, но я получаю это при попытке сделать формат времени (Python2.7)...

в Linux env:

>>> 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(), кажутся одинаковыми, поэтому я не совсем уверен, что мне нужно изменить.

Ответ 1

В общем, вы обнаружите, что python time.strftime() поддерживает тот же набор спецификаторов формата, что и платформа (или эта платформа libc, которая будет более конкретной). Тем не менее, только их часть переносима. См. http://docs.python.org/library/time.html для списка. Чтобы процитировать документы:

Дополнительные директивы могут поддерживаться на определенных платформах, но только перечисленные здесь имеют значение, стандартизованное ANSI C.

В этом случае %T можно заменить на %H:%M:%S.

Ответ 2

Я не вижу, чтобы директива формата %T, указанная в документации Python, не должна быть доступна/реализована для платформы Windows ( Я попытался с Python v2.7.3 и 3.2.3 только сейчас)

Ответ 3

Я обнаружил, что у меня была эта проблема, потому что MacOS поддерживает "%D", и мне пришлось заменить его на "%m/%d/%Y", чтобы сделать его кросс-платформенным. В общем, объединение "простых" строк формата, таких как %m, кажется более безопасным, чем использование "агрегатных" строк, таких как %T или %D.