将 iso 格式日期时间字符串转换为 Python 中的日期时间对象

Convert iso format datetime string to datetime object in Python

我在 Python 3.6 中将 iso 格式的日期时间字符串转换为日期时间对象时遇到问题,而不会丢失时区信息。 字符串是这样的

2021-07-04T00:00:00+02:00

我尝试了datetime.datetime.strptime方法。但是无法设置正确的格式字符串。

datetime.datetime.strptime( "2021-07-04T00:00:00+02:00", "%Y-%m-%dT%H:%M:%S%z")

如果日期时间字符串采用这种格式,则它有效:

datetime.strptime("2021-07-04T00:00:00+0200", "%Y-%m-%dT%H:%M:%S%z")

但在这种格式下,不起作用:

datetime.datetime.strptime( "2021-07-04T00:00:00+02:00", "%Y-%m-%dT%H:%M:%S%z")

我有这种格式的日期时间:

2021-07-04T00:00:00+02:00

对于Python 3.7+你可以使用datetime.datetime.fromisoformat()函数,也 strptime("2021-07-04T00:00:00+02:00", "%Y-%m-%dT%H:%M:%S%z") 会很好。

对于 Python 3.6 及更低版本,时区格式预计为 ±HHMM。因此,您必须在使用 strptime 之前转换字符串(删除最后一个分号)。

例如:

tz_found = t_str.find('+')    
if tz_found!=-1 and t_str.find(':', tz_found)!=-1:
    t_str = t_str[:tz_found+3] + t_str[tz_found+4:tz_found+6]
result = datetime.datetime.strptime( t_str, "%Y-%m-%dT%H:%M:%S%z")