我知道如何用C和Java来做,但我不知道将年/月/日/小时/分/秒转换为自1970年1月1日以来的秒数的快速方法。
有人可以帮助我吗?
到目前为止,我已经想出如何创建一个datetime
object,但我似乎无法获得自纪元以来经过的#秒。
(编辑:我的问题与另一个问题相反:Python: Seconds since epoch to relative date)
答案 0 :(得分:9)
使用timetuple
或utctimetuple
方法获取时间元组并使用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)
答案 1 :(得分:3)
您可以使用datetime.datetime(1970, 1, 1)
作为参考,并获取datetime.timedelta
对象的总秒数,如下所示:
from datetime import datetime
delta = your_date - datetime(1970, 1, 1)
delta.total_seconds()
答案 2 :(得分:2)
import calendar
calendar.timegm(datetime_object.utctimetuple())
答案 3 :(得分:0)
这些行可以返回表示自纪元以来秒数的浮点数。
import time
time.time()
答案 4 :(得分:0)
将日期时间对象(故障停留时间:年/月/日/小时/分钟/秒)转换为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版本的代码,请参阅Converting datetime.date to UTC timestamp in Python。