Python datetime跨天时间小时差计算异常:结果与预期不符
时间差计算结果不符的原因及解决办法
你用datetime模块计算02:30 PM到01:30 AM的时间差得到13小时,但实际应该是11小时,问题出在日期默认值上:
- 当你只用
%I:%M %p格式解析时间时,datetime会自动给两个时间加上默认的日期1900-01-01 - 解析后
firstTime是1900-01-01 14:30:00,endTime是1900-01-01 01:30:00 - 直接用
firstTime - endTime算的是同一天内14:30到01:30的倒推差值(13小时),但你实际需要的是从当天下午到次日凌晨的跨天差值
修正后的代码
import datetime start_time = "02:30 PM" end_time = "01:30 AM" firstTime = datetime.datetime.strptime(start_time , "%I:%M %p") endTime = datetime.datetime.strptime(end_time , "%I:%M %p") # 处理跨天:如果结束时间早于开始时间,说明是次日的时间,加一天 if endTime < firstTime: endTime += datetime.timedelta(days=1) deltaTime = endTime - firstTime print(f"Time Difference is {deltaTime.total_seconds()/(60*60)} hours")
运行这段代码会输出正确的11小时,因为我们给endTime补了一天,变成1900-01-02 01:30:00,此时和1900-01-01 14:30:00的差值就是11小时。
内容的提问来源于stack exchange,提问作者CTRLDON
相关产品推荐
相关产品推荐

