如何从毫秒在Python中创建日期时间?

232 投票
5 回答
269298 浏览
提问于 2025-04-15 11:07

我该如何在Python中从毫秒创建一个日期时间?我可以通过 java.util.Date(milliseconds) 在Java中创建一个类似的 Date 对象。

这个方法会分配一个日期对象,并将其初始化为表示自一个标准基准时间(称为“纪元”)以来的指定毫秒数,那个基准时间是1970年1月1日,格林威治标准时间00:00:00。

5 个回答

20

将毫秒转换为日期时间(UTC):

import datetime
time_in_millis = 1596542285000
dt = datetime.datetime.fromtimestamp(time_in_millis / 1000.0, tz=datetime.timezone.utc)
20

那这个呢?我想它应该可以处理1970年之前和2038年之后的日期。

target_datetime_ms = 200000 # or whatever
base_datetime = datetime.datetime(1970, 1, 1)
delta = datetime.timedelta(0, 0, 0, target_datetime_ms)
target_datetime = base_datetime + delta

正如Python标准库中提到的:

如果时间戳超出了平台的C语言的localtime()或gmtime()函数支持的范围,fromtimestamp()可能会引发ValueError。通常,这个范围限制在1970年到2038年之间。

很明显,这可以用一行代码实现:

target_dt = datetime(1970, 1, 1) + timedelta(milliseconds=target_dt_ms)

... 不仅我在回答中提到过这一点,而且2015年jfs的评论也非常误导,因为它把变量叫做utc_time

不对:这不是“时间”,而是datetime,而且绝对不是UTC。我们这里讨论的datetime是一个“无时区”的datetime,与有时区datetime相对。因此绝对不是UTC。

如果你对这个问题不熟悉,可以去查一下。

379

只需要把它转换成时间戳就行了。

datetime.datetime.fromtimestamp(ms/1000.0)

撰写回答