time
Модуль может быть инициализирован с помощью секунд с начала эпохи:
>>> import time
>>> t1=time.gmtime(1284286794)
>>> t1
time.struct_time(tm_year=2010, tm_mon=9, tm_mday=12, tm_hour=10, tm_min=19,
tm_sec=54, tm_wday=6, tm_yday=255, tm_isdst=0)
Есть ли элегантный способ инициализации datetime.datetime
объекта таким же образом?
Ответы:
datetime.datetime.fromtimestamp
будет делать, если вы знаете часовой пояс, вы могли бы производить тот же вывод, что и сtime.gmtime
или
источник
datetime.utcfromtimestamp
создает наивную временную метку. Мне пришлосьimport pytz
и использовать,datetime.fromtimestamp(1423524051, pytz.utc)
чтобы создать осведомленную дату и время.pytz
библиотеку , если вы хотите только UTC метку времени - вам нужно только ,from datetime import datetime, timezone
а затем вызвать его следующим образом :datetime.fromtimestamp(1423524051, timezone.utc)
. Он много раз сохранял дополнительную библиотеку, когда мне нужен только часовой пояс UTCpytz
.Секунды с эпохи
datetime
доstrftime
:источник
Из документов рекомендуемый способ получения объекта datetime с указанием часового пояса в секундах с начала эпохи:
Python 3 :
Python 2 , используя
pytz
:источник
pytz
просто получитьutc
объект tzinfo. Это легко создать самомуОбратите внимание, что datetime.datetime. метка времени (timestamp) и. Сбой utcfromtimestamp (timestamp) в Windows для дат до 1 января 1970 года, в то время как отрицательные метки времени unix, похоже, работают на платформах на основе unix. Документы говорят это:
Смотрите также Issue1646728
источник
utc_time = datetime(1970,1,1) + timedelta(seconds=timestamp)
, чтобы обойти это.