如何在Python中将datetime对象转换为自纪元以来的毫秒(unix时间)?

481 投票
13 回答
594465 浏览
提问于 2025-04-16 23:13

我有一个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

撰写回答