%z
解析指令不会在一个小时的UTC偏移量(Docs
:需要±hhmm [ss [.ffffff]]形式)中。但是您可以从序列中得出一个时区对象,然后将其设置为
from datetime import datetime, timedelta, timezone
s = "4 January 2022, 22:03 GMT-5"
parts = s.split('GMT')
dt = (datetime.strptime(parts[0].strip(), "%d %B %Y, %H:%M") # parse to datetime w/o offset
.replace(tzinfo=timezone(timedelta(hours=int(parts[1]))))) # add UTC offset
print(dt)
# 2022-01-04 22:03:00-05:00
UTC
固定到+/-h
+/-hhmm
from datetime import datetime
import re
def parse_date(string_date, _format):
fixed_string_date = re.sub(r'[+-]\d{1,2}', '', string_date)
offset = int(string_date.replace(fixed_string_date, '') or 0)
fixed_string_date += f"{offset:+03d}00" if offset else ""
return datetime.strptime(fixed_string_date, _format)
print(parse_date("Mon, Feb 24, 2025, 09:05:00 AM UTC+10", "%a, %b %d, %Y, %I:%M:%S %p %Z%z"))
print(parse_date("Sat, Jan 01, 2023, 05:43:26 PM UTC", "%a, %b %d, %Y, %I:%M:%S %p %Z"))
print(parse_date("4 January 2022, 22:03 GMT-5", "%d %B %Y, %H:%M %Z%z"))
匹配1位数字偏移。