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

Python中JSON字符串日期转datetime格式报错的解决方法

解决JSON时间戳转Python datetime的ValueError问题

问题根源

你遇到的错误是因为格式字符串符号使用错误,加上Python strptime 对微秒、时区格式的限制:

  1. 格式符混淆:%y 是两位年份(如22),你需要的四位年份应该用 %Y;%M 代表分钟,月份要改用 %m;%m 代表月份,分钟要改用 %M。
  2. %f 仅支持6位微秒,但你的时间戳是7位(.9871548)。
  3. %z 不支持带冒号的时区格式(如+08:00),仅识别+0800这类无冒号的格式。

解决方案

方案1:修正格式符并预处理时间戳

手动调整时间戳的微秒和时区格式,再用正确的格式字符串解析:

from datetime import datetime

timestamp_str = "2022-12-30T16:27:56.9871548+08:00"

# 截断7位微秒到6位,同时移除时区的冒号
split_dot = timestamp_str.split(".")
processed_str = f"{split_dot[0]}.{split_dot[1][:6]}{split_dot[1][6:].replace(':', '')}"

# 正确的格式字符串
fmt = "%Y-%m-%dT%H:%M:%S.%f%z"
dt_obj = datetime.strptime(processed_str, fmt)
print(dt_obj)

方案2:使用dateutil自动解析(更简便)

python-dateutil 库可以自动识别这类复杂时间格式,无需手动指定格式符:

from dateutil import parser

timestamp_str = "2022-12-30T16:27:56.9871548+08:00"
dt_obj = parser.parse(timestamp_str)
print(dt_obj)

需要先安装库:

pip install python-dateutil

内容的提问来源于stack exchange,提问作者Amanda Choy Siew Wen

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 01:10:07