如何从毫秒在Python中创建日期时间?
我该如何在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)