python:将年/月/日/小时/分钟/秒转换为1970年1月1日以来的秒数

时间:2011-12-13 16:18:09

标签: python datetime time epoch

我知道如何用C和Java来做,但我不知道将年/月/日/小时/分/秒转换为自1970年1月1日以来的秒数的快速方法。

有人可以帮助我吗?

到目前为止,我已经想出如何创建一个datetime object,但我似乎无法获得自纪元以来经过的#秒。

(编辑:我的问题与另一个问题相反:Python: Seconds since epoch to relative date

5 个答案:

答案 0 :(得分:9)

使用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)

答案 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()方法使用本地时区。

Python 3.3中引入了

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