如何解决在 Python 中将 iso 格式的日期时间字符串转换为日期时间对象
我在 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")