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

Unix时间戳转日期JS可正常转换,Python报错该如何解决

问题解决:微秒级Unix时间戳在Python3.9中的转换方法

错误原因

  • 你传入的1615370972685000是微秒级Unix时间戳(1秒=1000000微秒),而Python的datetime.datetime.utcfromtimestamp()仅接收秒级时间戳作为输入。
  • 你之前仅除以1000得到的是毫秒级数值,依旧远超出函数支持的输入范围,所以会抛出OSError: [Errno 22] Invalid argument错误。
  • JS代码能得到正确结果的原因是:JS的Date()构造函数接收毫秒级时间戳,原JS代码中将微秒级时间戳除以1000转成毫秒后传入,刚好符合JS的参数要求。

正确实现代码

1. 转换为UTC时间

import datetime

ts = 1615370972685000
# 微秒级转秒级,除以1e6即可
utc_dt = datetime.datetime.utcfromtimestamp(ts / 1_000_000)
print(utc_dt)
# 输出结果:2021-03-10 10:09:32.685000,和JS输出的GMT+0100结果刚好差1小时时区差,逻辑完全匹配

2. 转换为和JS输出完全一致的GMT+1时区时间

Python3.9内置了zoneinfo模块,可以直接指定时区转换:

from datetime import datetime
from zoneinfo import ZoneInfo

ts = 1615370972685000
# 选择GMT+1对应的时区,比如欧洲巴黎时区
local_dt = datetime.fromtimestamp(ts / 1_000_000, tz=ZoneInfo("Europe/Paris"))
# 格式化输出和JS完全一致的格式
print(local_dt.strftime("%a %b %d %Y %H:%M:%S GMT%z"))
# 输出结果:Wed Mar 10 2021 11:09:32 GMT+0100

补充说明

如果需要保留原始时间戳的微秒精度也无需额外处理,除以1e6后的小数部分会被datetime自动识别为微秒信息。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 19:24:00