繁体   English   中英

ValueError: 时间数据 '2020-01-31T15:16:21+00:00' 与格式 '%Y-%m-%dT%H:%M:%S%z' 不匹配

[英]ValueError: time data '2020-01-31T15:16:21+00:00' does not match format '%Y-%m-%dT%H:%M:%S%z'

我确实在获取 datetime 来解析这个时间数据时遇到了一些麻烦。 (这适用于 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")

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM