.000Z
не распознается как смещение часового пояса. На самом деле у вас есть миллисекунды и часовой пояс (Z
– это UTC), и официально синтаксический анализатор time.strptime()
не может обрабатывать миллисекунды. На некоторых платформах %f
будет анализировать микросекундную часть, а затем отбрасывать информацию.
Однако метод класса datetime.datetime.strptime()
может , но не часовой пояс; проанализируйте Z
как литерал, и он работает:
from datetime import datetime
datetime.strptime(key.last_modified, '%Y-%m-%dT%H:%M:%S.%fZ')
Демо:
>>> from datetime import datetime
>>> import time
>>> example = u'2013-10-20T00:41:32.000Z'
>>> datetime.strptime(example, '%Y-%m-%dT%H:%M:%S.%fZ')
datetime.datetime(2013, 10, 20, 0, 41, 32)
>>> time.strptime(example, '%Y-%m-%dT%H:%M:%S.%fZ')
time.struct_time(tm_year=2013, tm_mon=10, tm_mday=20, tm_hour=0, tm_min=41, tm_sec=32, tm_wday=6, tm_yday=293, tm_isdst=-1)
Обратите внимание, что на моем ноутбуке с Mac OS X %f
работает на time.strptime()
; однако не гарантируется, что он будет работать везде.
Преобразование объекта datetime.datetime()
в кортеж времени можно выполнить с помощью метода datetime.timetuple()
а>.
person
Martijn Pieters
schedule
20.10.2013