2011-12-13 90 views

回答

8

使用timetupleutctimetuple方法获取时间数组和使用它转换成时间戳time.mktime

>>> import datetime 
>>> dt = datetime.datetime(2011, 12, 13, 10, 23) 
>>> import time 
>>> time.mktime(dt.timetuple()) 
1323793380.0 

有一个很好的错误相关http://bugs.python.org/issue2736,这是有趣的阅读和任何人试图转换为时间戳应阅读此。根据该线程正确的方法是

timestamp = (dt - datetime(1970, 1, 1))/timedelta(seconds=1) 
+0

'mktime()'只在'dt'是当地时间时才起作用。 “正确的方式”只适用于'dt'是一个天真的日期时间对象,它表示UTC的时间(如果'dt'是本地时间,则是错误的)。请参阅[在Python中将datetime.date转换为UTC时间戳](http://stackoverflow.com/a/8778548/4279)。 – jfs

2

您可以使用datetime.datetime(1970, 1, 1)作为参考,从datetime.timedelta对象获得秒的总金额如下:

from datetime import datetime 

delta = your_date - datetime(1970, 1, 1) 
delta.total_seconds() 
+0

它假定'your_date'是UTC日期。 – jfs

2
import calendar 

calendar.timegm(datetime_object.utctimetuple()) 
+0

如果'datetime_object'没有附加时区信息,'utctimetuple()'会自动失败,除非'datetime_object'已经代表UTC时间。 – jfs

0

这些线可以返回表示纪元以来秒的浮点数。

import time 

time.time() 
+2

这不是问题。 – kay

0

为DateTime对象(破停机时间:年/月/日/时/分/秒)转换为seconds since the Epoch (POSIX time)

seconds_since_epoch = datetime_object.timestamp() 

注:POSIX Epoch is "00:00:00 GMT, January 1, 1970"

如果datetime_object没有时区信息,则.timestamp()方法使用本地时区。

datetime.timestamp() method是在Python 3.3中引入的;对于适用于较旧Python版本的代码,请参阅Converting datetime.date to UTC timestamp in Python

相关问题