# 使用time.mktime的日期/时间转换似乎是错误的Date/time conversion using time.mktime seems wrong

``````>>> 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
``````

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

## 4 个回复4

### ===============>>#1 票数：7

Epoch是UTC。

``````>>> time.mktime((2009, 1, 31, 0, 0, 0, 5, 31, -1))
1233360000.0
``````

``````>>> (1233378000 - 1233360000) / (60*60)
5
``````

### ===============>>#2 票数：3

``````mktime(...)
mktime(tuple) -> floating point number

Convert a time tuple in local time to seconds since the Epoch.
``````

``````The other representation is a tuple of 9 integers giving local time.
The tuple items are:
year (four digits, e.g. 1998)
month (1-12)
day (1-31)
hours (0-23)
minutes (0-59)
seconds (0-59)
weekday (0-6, Monday is 0)
Julian day (day in the year, 1-366)
DST (Daylight Savings Time) flag (-1, 0 or 1)
If the DST flag is 0, the time is given in the regular time zone;
if it is 1, the time is given in the DST time zone;
if it is -1, mktime() should guess based on the date and time.
``````

``````>>> time.mktime((2009, 1, 31, 0, 0, 0, 5, 31, -1))
1233356400.0
>>> (1233378000.0 - 1233356400)/(60*60)
6.0
``````

### ===============>>#3 票数：2

``````>>> calendar.timegm((2009, 1, 31, 0, 0, 0, 5, 31, -1))
1233360000
>>> 1233360000 / (60*60*24)
14275
``````

### ===============>>#4 票数：0

``````>>> now = time.mktime((2008, 8, 22, 11 ,17, -1, -1, -1, -1))
>>> tomorrow = time.mktime((2008, 8, 23, 11 ,17, -1, -1, -1, -1))
>>> tomorrow - now
86400.0
``````