毫秒转datetime格式异常求助:转换结果与预期不符
毫秒转Datetime问题解决方案
问题根源
你遇到的问题来自两个核心错误:
- 时间戳单位混淆:你提供的
1701092673是秒级时间戳,不是毫秒级。如果是毫秒,数值应该是1701092673000。 - 时区差异:
datetime.fromtimestamp()默认使用本地时区转换,而你的预期结果是UTC时间。
错误代码分析
- 第一段代码:将秒级时间戳除以1000,得到
1701092.673秒,对应1970年1月的时间,结果自然错误。 - 第二段代码:直接用本地时区转换秒级时间戳,若你的时区是UTC+8,就会得到
2023-11-27 14:44:33,和UTC时间差8小时。
正确代码实现
情况1:数值为秒级时间戳(符合你的预期输入)
使用utcfromtimestamp()直接转换为UTC时间:
import datetime timestamp = 1701092673 dt_utc = datetime.datetime.utcfromtimestamp(timestamp).strftime('%Y-%m-%d %H:%M:%S') print(dt_utc) # 输出:2023-11-27 02:44:33
情况2:数值确实是毫秒级时间戳(需补全末尾3个0)
先将毫秒转秒,再用UTC时区转换:
import datetime ms_timestamp = 1701092673000 dt_utc = datetime.datetime.utcfromtimestamp(ms_timestamp / 1000).strftime('%Y-%m-%d %H:%M:%S') print(dt_utc) # 输出:2023-11-27 02:44:33
内容的提问来源于stack exchange,提问作者Arman Hazarika
相关产品推荐
相关产品推荐

