python - ValueError:时间数据“2020-01-31T15:16:21+00:00”与格式“%Y-%m-%dT%H:%M:%S%z”不匹配
问题描述
我在获取日期时间来解析这个时间数据时确实遇到了一些麻烦。(这适用于windows,但不适用于linux)
谁能告诉我为什么这在 Linux 上不起作用?
d1 = '2020-01-31T15:16:21+00:00'
d1 = datetime.datetime.strptime(d1, "%Y-%m-%dT%H:%M:%S%z")
解决方案
它也不应该在 Windows 中工作。如日期时间文档中所述,该%z
格式不支持时区的小时和分钟之间的冒号。您需要先删除冒号:
import datetime
import re
d1 = "2020-01-31T15:16:21+00:00"
# Remove all colons in the timezone part
d1 = re.sub(r"([\+-]\d\d):(\d\d)(?::(\d\d(?:.\d+)?))?", r"\1\2\3", d1)
d1 = datetime.datetime.strptime(d1, "%Y-%m-%dT%H:%M:%S%z") # now works normally
预期%z
格式:±HHMM[SS[.ffffff]]
基于上述格式的正则表达式含义说明:https ://regex101.com/r/EoOBHW/1
或者,您可以使用dateutil第三方库,它可以成功解析该字符串:
import datetime
from dateutil.parser import parse
d1 = parse("2020-01-31T15:16:21+00:00")
推荐阅读
- .net-core - 发布到 IIS 后启用 CORS 不起作用
- firebase-cloud-messaging - FCM 控制台与活动目录的集成
- javascript - 光滑的滑块项目未以移动设备为中心
- reactjs - 无法将产品移动到稍后将显示在另一个页面(另一个组件)上的新数组
- mongodb - Mongo Repository Error: No property first found for type Person!, 在定义 findByFirst_name(String first_Name) 时出错;
- apache-kafka - 如何更改流中的窗口时间?
- node.js - 在 Windows 10 上的命令 npm init 后找不到模块“util.js”
- go - 如何在 Go 中获取指向结构内字段的真实指针?
- c# - 在 Xamarin 中使用 CocoSharp 绘制移动图表会导致帧速率变慢
- javascript - Google Apps 脚本:当日期 < 今天 + xx 天时删除数据