Python - calendar.timegm()与time.mktime()

时间:2010-06-02 10:42:54

标签: python timezone

我似乎很难理解这一点。

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 个答案:

答案 0 :(得分:93)

time.mktime()假定传递的元组是本地时间,calendar.timegm()假定它是GMT / UTC。根据解释,元组表示不同的时间,因此函数返回不同的值(自纪元以UTC为基础的秒数)。

值之间的差异应该等于当地时区的时区偏移量。

答案 1 :(得分:9)

calendar.timegm转换自UTC时间戳time.mktime converts from local time not UTC

8小时的结果差异与您所在位置的时区完全一致。