Форматирование времени 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
.