使用time.mktime的日期/时间转换似乎是错误的

Dan*_*amy 3 python datetime

>>> import time
>>> time.strptime("01-31-2009", "%m-%d-%Y")
(2009, 1, 31, 0, 0, 0, 5, 31, -1)
>>> time.mktime((2009, 1, 31, 0, 0, 0, 5, 31, -1))
1233378000.0
>>> 60*60*24 # seconds in a day
86400
>>> 1233378000.0 / 86400
14275.208333333334
Run Code Online (Sandbox Code Playgroud)

time.mktime应该返回自纪元以来的秒数.因为我在午夜给它一个时间而且这个时期在午夜,所以结果不应该被一天中的秒数整除吗?

Phi*_*lds 7

简短的回答:因为时区.

Epoch是UTC.

例如,我在IST(爱尔兰标准时间)或UTC + 1.time.mktime()是相对于我的时区,所以我的系统指的是

>>> time.mktime((2009, 1, 31, 0, 0, 0, 5, 31, -1))
1233360000.0
Run Code Online (Sandbox Code Playgroud)

因为你得到了结果1233378000,这表明你落后我5个小时

>>> (1233378000 - 1233360000) / (60*60)    
5
Run Code Online (Sandbox Code Playgroud)

看一下time.gmtime()UTC工作的功能.