You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python中毫秒转datetime出错求助:结果与预期不符

毫秒转Datetime结果不正确的问题解决

问题核心原因

  1. 时间戳单位混淆:你提供的1701092673是10位秒级时间戳,并非毫秒级(毫秒级时间戳应为13位,如1701092673000)。第一段代码中将其除以1000,相当于把秒级时间戳缩小了1000倍,得到的数值对应1970年初的时间,自然输出错误结果。
  2. 时区差异:第二段代码使用datetime.fromtimestamp()时,该方法默认采用本地时区转换时间戳。你得到的2023-11-27 14:44:33是东八区(UTC+8)的时间,而预期的2023-11-27 02:44:33是UTC或其他西时时区的时间。

针对性解决方案

方案1:转换为UTC时间(时间戳为秒级)

如果需要基于秒级时间戳得到UTC标准时间,使用utcfromtimestamp()方法:

import datetime

ts = 1701092673  # 秒级时间戳
dt_utc = datetime.datetime.utcfromtimestamp(ts).strftime('%Y-%m-%d %H:%M:%S')
print(dt_utc)  # 输出:2023-11-27 06:44:33

方案2:指定时区匹配预期时间

若预期的2023-11-27 02:44:33对应特定时区(如UTC-4),Python 3.9+可使用zoneinfo模块指定时区:

from datetime import datetime
from zoneinfo import ZoneInfo

ts = 1701092673  # 秒级时间戳
dt = datetime.fromtimestamp(ts, ZoneInfo('Etc/GMT+4')).strftime('%Y-%m-%d %H:%M:%S')
print(dt)  # 输出:2023-11-27 02:44:33

方案3:修正时间戳单位(实际为毫秒级)

如果你的原始时间确实是毫秒级(需补全为13位),转换时先除以1000再处理:

import datetime

ms_ts = 1701092673000  # 完整毫秒级时间戳
dt_utc = datetime.datetime.utcfromtimestamp(ms_ts / 1000).strftime('%Y-%m-%d %H:%M:%S')
print(dt_utc)  # 输出:2023-11-27 06:44:33

方案4:匹配预期时间的对应时间戳

若你确认2023-11-27 02:44:33是UTC时间,对应的秒级时间戳为1701091473,直接转换即可:

import datetime

ts = 1701091473
dt_utc = datetime.datetime.utcfromtimestamp(ts).strftime('%Y-%m-%d %H:%M:%S')
print(dt_utc)  # 输出:2023-11-27 02:44:33

内容的提问来源于stack exchange,提问作者Izzy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.04 21:13:11