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

Python转换'2017-02-28T23:00:00.000Z'为datetime对象报错求助

问题分析与解决

你的代码里有两个关键错误,直接导致了正则分组重名的报错,我们一步步来修复:

1. 修正重复的占位符错误

报错提示redefinition of group name 'M',核心原因是你在格式字符串里误用了重复的占位符:

  • 第一个%M你想表示月份,但Python的strptime规则里,大写%M是分钟的占位符,月份的正确占位符是小写的%m。
  • 第二个%M才是正确的分钟占位符,重复使用同一个占位符会让底层正则表达式的分组命名冲突,所以抛出了这个错误。

2. 修正时区部分的格式匹配

原字符串末尾是.000Z,你用的.%Z不符合匹配规则:

  • %Z匹配的是时区名称(比如UTC、EST),而这里的Z是ISO 8601标准里的UTC标识,应该直接把Z写在格式字符串里,前面用%f匹配毫秒(%f支持6位微秒,3位毫秒会自动补零,不影响解析)。

修复后的代码

方案一:使用修正后的strptime格式

import datetime
ev_begin_date = datetime.datetime.strptime('2017-02-28T23:00:00.000Z', '%Y-%m-%dT%H:%M:%S.%fZ')
print(ev_begin_date)
# 输出:2017-02-28 23:00:00

方案二:更简洁的fromisoformat(Python 3.7+支持)

如果你的Python版本在3.7及以上,推荐用fromisoformat方法,只需要把末尾的Z替换成+00:00即可(该方法原生支持带时区的ISO格式):

import datetime
ev_begin_date = datetime.datetime.fromisoformat('2017-02-28T23:00:00.000Z'.replace('Z', '+00:00'))
print(ev_begin_date)
# 输出:2017-02-28 23:00:00+00:00

这个方案还能保留时区信息,如果你需要处理时区相关的逻辑会更方便。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.13 08:20:46