Python中如何计算两个Datetime列的差值?求解格式匹配报错
解决Datetime差值计算的格式匹配报错问题
报错原因
你的时间字符串是'2022-07-31 23:58:30+00:00',但使用的格式串'%Y-%m-%d %H:%M:%S.%fz'存在两个问题:
- 字符串中没有毫秒部分(
.%f对应毫秒,比如.123),格式串多余了.%f - 时区偏移
+00:00需要用%z匹配,而不是%fz
解决方法1:修正strptime格式串
直接去掉格式串中的.%f,并将%fz改为%z,即可正确解析:
from datetime import datetime t1 = datetime.strptime('2022-07-31 23:58:30+00:00', '%Y-%m-%d %H:%M:%S%z') print('planned_event_time:', t1.time()) t2 = datetime.strptime('2022-07-31 23:58:30+00:00', '%Y-%m-%d %H:%M:%S%z') print('actual_event_time:', t2.time()) # 计算时间差 delta = t2 - t1 print(f"时间差: {delta}")
解决方法2:使用fromisoformat(Python 3.7+)
如果你的Python版本在3.7及以上,推荐直接用fromisoformat解析ISO标准格式的时间字符串,无需手动编写格式串,更简洁可靠:
from datetime import datetime t1 = datetime.fromisoformat('2022-07-31 23:58:30+00:00') print('planned_event_time:', t1.time()) t2 = datetime.fromisoformat('2022-07-31 23:58:30+00:00') print('actual_event_time:', t2.time()) delta = t2 - t1 print(f"时间差: {delta}")
内容的提问来源于stack exchange,提问作者Namrata Jadhao
相关产品推荐
相关产品推荐

