Python - calendar.timegm () по сравнению с time.mktime ()

Мне, кажется, нелегко получать мою голову вокруг этого.

Между чем различие calendar.timegm() и time.mktime()?

Скажите, что у меня есть a datetime.datetime без присоединенного tzinfo разве эти два не должны давать тот же вывод? Они и не дают число секунд между эпохой и датой, переданной в качестве параметра? И так как дата передала, не имеет никакого tzinfo, не то, что число секунд то же?

>>> import calendar
>>> import time
>>> import datetime
>>> d = datetime.datetime(2010, 10, 10)
>>> calendar.timegm(d.timetuple())
1286668800
>>> time.mktime(d.timetuple())
1286640000.0
>>> 
57
задан ibz 2 June 2010 в 10:42
поделиться

2 ответа

time.mktime () предполагает, что переданный кортеж находится в местном времени, calendar.timegm () предполагает, что это в GMT / UTC. В зависимости от интерпретации кортеж представляет разное время, поэтому функции возвращают разные значения (секунды с начала эпохи основаны на UTC).

Разница между значениями должна быть равна смещению часового пояса вашего местного часового пояса.

97
ответ дан 24 November 2019 в 19:33
поделиться

calendar.timegm преобразуется из метки времени UTC, time.mktime преобразуется из местного времени, а не из UTC .

Разница в 8 часов в их результатах точно соответствует часовому поясу вашего местоположения.

9
ответ дан 24 November 2019 в 19:33
поделиться
Другие вопросы по тегам:

Похожие вопросы: