Python将时间戳转换为日期得到错误结果如何解决?
时间戳转换日期偏差问题解决方案
问题根源
你遇到的日期差1天的问题是时区差异导致的:
- 你使用的
datetime.fromtimestamp()方法默认会将时间戳转换为运行设备的本地时区时间 - 时间戳
1584474718199对应的UTC标准时间为2020-03-17 23:51:58,如果你的设备时区为UTC+8(中国标准时间),加上8小时偏移后就会得到2020-03-18的日期,和你当前的输出结果一致。
修复方案
如果你预期的是UTC时区对应的日期,使用以下两种写法均可:
写法1:兼容Python全版本
from datetime import datetime timestamp = 1584474718199/1000 # 直接转换为UTC时间 dt_object = datetime.utcfromtimestamp(timestamp) print(f"{dt_object:%Y-%m-%d}")
写法2:Python3.3+ 规范写法(推荐,带时区信息避免歧义)
from datetime import datetime, timezone timestamp = 1584474718199/1000 # 显式指定转换为UTC时区的时间 dt_object = datetime.fromtimestamp(timestamp, tz=timezone.utc) print(f"{dt_object:%Y-%m-%d}")
两种写法运行后都会输出你预期的2020-03-17结果。
内容的提问来源于stack exchange,提问作者MITHU
相关产品推荐
相关产品推荐

