如果unix_timestamp_millis
包含“自纪元以来的毫秒数”并且您想使用datetime.fromtimestamp()
方法获取本地时间(@Chronial 答案的变体):
#!/usr/bin/env python
from datetime import datetime
seconds, millis = divmod(unix_timestamp_millis, 1000)
local_dt = datetime.fromtimestamp(seconds).replace(microsecond=millis*1000)
要考虑本地时区规则随时间可能发生的变化,您可以通过模块使用tz 数据库:pytz
#!/usr/bin/env python
from datetime import datetime
from tzlocal import get_localzone # $ pip install tzlocal
local_timezone = get_localzone() # get pytz tzinfo object
seconds, millis = divmod(unix_timestamp_millis, 1000)
local_dt = datetime.fromtimestamp(seconds, local_timezone)
local_dt = local_dt.replace(microsecond=millis*1000)
结果是一个时区感知的日期时间对象。
如果您无法安装第 3 方模块,请使用 UTC 时间:
#!/usr/bin/env python
from datetime import datetime
seconds, millis = divmod(unix_timestamp_millis, 1000)
utc_dt = datetime.utcfromtimestamp(seconds).replace(microsecond=millis*1000)
如果输入是以毫秒数给出的POSIX 时间戳(可能;除非使用“正确”时区),那么您可以通过直接公式找到分解的 UTC 时间:
#!/usr/bin/env python
from datetime import datetime, timedelta
utc_dt = datetime(1970, 1, 1) + timedelta(milliseconds=unix_timestamp_millis)