Python 从偏移字符串获取时区

Python get timezone from offset string

我是 Python 中日期时间的新手,我有一个这种格式的日期字符串 '05/18/2022 12:00:55'。还有一个像这样的单独的偏移字符串 '-06:00'。 我正在尝试制作一个基于偏移字符串的时区感知的最终日期时间对象。 预期结果 2022-05-18 06:00:55-06:00

尝试 1 - 将偏移量字符串添加到日期时间字符串并转换为日期时间对象。这导致 2022-05-18 12:00:55-06:00 而不是 2022-05-18 06:00:55-06:00

date_string = '05/18/2022 12:00:55'
timezone_string = '-06:00'
date_string_2 = datetime.strptime(date_string + timezone_string, '%m/%d/%Y %H:%M:%S%z')
print(date_string_2)

尝试 2 - 尝试使用 tzinfo 属性 但这会引发错误

date_string = '05/18/2022 12:00:55'
timezone_string = '-06:00'
date_string_2 = datetime.strptime(date_string, '%m/%d/%Y %H:%M:%S%z')
date_string_2.replace(tzinfo=timezone_string)
print(date_string_2)

任何人都可以帮助 and/or 指出我正确的方向。谢谢。

基本上您需要将 date_string 解析为日期时间对象,将 tzinfo 替换为 UTC,然后将 astimezone 转换为 UTC-6。为此,您也将 timezone_string 解析为 datetime 对象,但只需使用其 tzinfo.

EX:

from datetime import datetime, timezone

date_string = "05/18/2022 12:00:55"
timezone_string = "-06:00"

dtobj_utc = datetime.strptime(date_string, "%m/%d/%Y %H:%M:%S").replace(tzinfo=timezone.utc)
dtobj_tz = dtobj_utc.astimezone(datetime.strptime(timezone_string, "%z").tzinfo)

print(dtobj_tz.isoformat(" ", timespec="seconds"))
# 2022-05-18 06:00:55-06:00