我似乎很难理解这一点。
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
>>>
答案 0 :(得分:93)
time.mktime()
假定传递的元组是本地时间,calendar.timegm()
假定它是GMT / UTC。根据解释,元组表示不同的时间,因此函数返回不同的值(自纪元以UTC为基础的秒数)。
值之间的差异应该等于当地时区的时区偏移量。
答案 1 :(得分:9)
calendar.timegm
转换自UTC时间戳time.mktime
converts from local time not UTC。
8小时的结果差异与您所在位置的时区完全一致。