Питон - календарь.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
>>>
2 ответов:
time.mktime()предполагает, что переданный кортеж находится в локальном времени,calendar.timegm()предполагает, что это в GMT/UTC. В зависимости от интерпретации Кортеж представляет собой разное время, поэтому функции возвращают разные значения (секунды с момента начала эпохи основаны на UTC).разница между значениями должна быть равна смещению часового пояса вашего местного часового пояса.
calendar.timegmпреобразует из метки времени UTC,time.mktimeпреобразует из local время не UTC.8 часов разница в их результатах точно соответствует часовому поясу вашего местоположения.
Comments