如何在Python中将datetime对象转换为自纪元以来的毫秒(unix时间)?
我有一个Python的datetime
对象,我想把它转换成Unix时间,也就是从1970年开始到现在的秒数或毫秒数。
我该怎么做呢?
13 个回答
107
>>> import datetime
>>> # replace datetime.datetime.now() with your datetime object
>>> int(datetime.datetime.now().strftime("%s")) * 1000
1312908481000
或者使用时间模块的帮助(不需要日期格式化):
>>> import datetime, time
>>> # replace datetime.datetime.now() with your datetime object
>>> time.mktime(datetime.datetime.now().timetuple()) * 1000
1312908681000.0
这个回答得到了以下网站的帮助: http://pleac.sourceforge.net/pleac_python/datesandtimes.html
文档链接:
312
在Python 3.3中,新增了一个方法叫做 timestamp
:
import datetime
seconds_since_epoch = datetime.datetime.now().timestamp()
你提到你需要毫秒,可以这样获取:
milliseconds_since_epoch = datetime.datetime.now().timestamp() * 1000
如果你在一个没有时区信息的日期时间对象上使用 timestamp
,那么它会默认认为这个时间是你本地的时区。如果你不想这样,建议使用带有时区信息的日期时间对象。
564
在我看来,最简单的方法就是这样做:
import datetime
epoch = datetime.datetime.utcfromtimestamp(0)
def unix_time_millis(dt):
return (dt - epoch).total_seconds() * 1000.0