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
相关产品推荐
相关产品推荐

