Питон - календарь.timegm() и времени.mktime()



кажется, мне трудно разобраться в этом.



В чем разница между calendar.timegm() и time.mktime()?



скажем, у меня есть 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
>>>
625   2  

2 ответов:

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

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

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

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

Comments

    Ничего не найдено.