簡體   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