Python - 使用 strptime() 将"20:52:30.0000000+02:00"转换为日期时间



我正在尝试这样做:

time_str = "20:52:30.0000000+02:00"
time = datetime.strptime(time_str, "%H:%M:%S.%f%z")

但我得到以下错误ValueError: time data '20:52:30.0000000+02:00' does not match format '%H:%M:%S.%f%z'。很明显,我的格式字符串是错误的,但我已经经历了许多stackoverflow线程,同时试图找到正确的线程,但都无济于事。

使用当前的输入字符串格式,是否可以进行直接转换?

提前感谢

编辑:正如人们在评论中提到的,时区应该写为0200,而不是02:00。但如果我相应地更改代码,我仍然会得到相同的错误:

time_str = "20:52:30.0000000+0200"
time = datetime.strptime(time_str, "%H:%M:%S.%f%z")

ValueError: time data '20:52:30.0000000+0200' does not match format '%H:%M:%S.%f%z'

你可以在这里用在线翻译试试https://www.online-python.com/NXw90TtQJ8

%f处理范围为000000-9999999的值(https://docs.python.org/3/library/datetime.html#strftime-strptimebehavior(
从输入字符串中删除一个零,您的代码应该可以使用

from datetime import datetime
time_str = "20:52:30.000000+0200"
time = datetime.strptime(time_str, "%H:%M:%S.%f%z")

另一种方法是将%w添加到strptime:

from datetime import datetime
time_str = "20:52:30.0000000+0200"
time = datetime.strptime(time_str, "%H:%M:%S.%w%f%z")

但是,使用%-variables会更改使用strptime函数创建的对象time的字段。

在这种情况下;20:52:30.0[000000]+0200";将用于设置微秒字段,您可能不会使用该字段。

尽管如此,还是要让你从中获得数据的人对数据的格式做出解释。

最新更新