python: convert year/month/day/hour/min/second to # seconds since Jan 1 1970
我知道如何在C和Java中完成它,但是我不知道从1月1日1970世纪以来,将年/月/日/小时/分钟/秒转换为秒数的快速方法。
有人能帮我吗?
到目前为止,我已经知道了如何创建一个
(编辑:我的问题与另一个问题相反:python:seconds since epoch to relative date)
使用
1 2 3 4 5 | >>> import datetime >>> dt = datetime.datetime(2011, 12, 13, 10, 23) >>> import time >>> time.mktime(dt.timetuple()) 1323793380.0 |
有一个很好的bug与之相关,http://bugs.python.org/issue2736,这是一个有趣的阅读,任何试图转换为时间戳的人都应该阅读这个。根据那条线,正确的方法是
1 | timestamp = (dt - datetime(1970, 1, 1)) / timedelta(seconds=1) |
您可以使用
1 2 3 4 | from datetime import datetime delta = your_date - datetime(1970, 1, 1) delta.total_seconds() |
1 2 3 | import calendar calendar.timegm(datetime_object.utctimetuple()) |
要将日期时间对象(中断的停机时间:年/月/日/小时/分/秒)转换为自epoch以来的秒数(posix时间):
1 | seconds_since_epoch = datetime_object.timestamp() |
注:posix epoch为"1970年1月1日格林尼治标准时间00:00:00"。
如果
python3.3中引入了
这些行可以返回表示自epoch以来秒数的浮点数。
1 2 3 | import time time.time() |