You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

strptime报错unconverted data remains:24小时格式转换问题求助

问题解决:处理含24小时的字符串转datetime及时间差计算

报错原因

你用的%H格式符只能匹配00-23范围内的小时数,而你的字符串里是24,超出了这个范围。strptime只能识别第一个数字2,剩下的4就成了未转换的残留数据,所以抛出ValueError。

一行代码实现转换

因为24:00本质上等于次日的00:00,可以用替换+日期偏移的方式一行搞定:

from datetime import datetime, timedelta
dt = datetime.strptime(z[1].replace(':24', ':00'), '%d-%m-%Y:%H') + timedelta(days=1)

如果你的字符串里可能还有其他合法小时数(比如00-23),这个方法也能兼容——只有:24会被替换成:00并自动加一天,其他正常小时数直接按原格式转换。

时间差计算用datetime最便捷

没错,用datetime对象计算时间差是最直接的方式。两个datetime对象直接做减法,会得到timedelta对象,你可以直接从中获取天数、秒数、小时数等差值,比如:

delta = dt1 - dt2
print(delta.days, delta.seconds // 3600)  # 输出天数和小时数

完全不需要额外处理格式,简单高效。

内容的提问来源于stack exchange,提问作者Tom

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.23 06:12:02