Python新手求助:计算时间相加后跨越午夜的天数
完善时间相加函数并计算跨午夜天数
你的代码思路没问题,只需补充跨午夜天数的计算逻辑,同时优化返回文本的表述:
from datetime import datetime, timedelta def add_time(start_time: str, time_to_add: str): # 解析起始时间与待添加时间 start_dt = datetime.strptime(start_time, "%H:%M") add_dt = datetime.strptime(time_to_add, "%H:%M") # 计算新时间 new_dt = start_dt + timedelta(hours=add_dt.hour, minutes=add_dt.minute) # 计算跨越午夜的天数(通过日期差直接获取) days_passed = (new_dt.date() - start_dt.date()).days # 格式化返回结果文本 new_time_str = new_dt.strftime("%H:%M") if days_passed == 0: return f"New time is {new_time_str}, same day" elif days_passed == 1: return f"New time is {new_time_str}, 1 day after" else: return f"New time is {new_time_str}, {days_passed} days after" # 测试示例 print(add_time("23:20", "19:20")) # 输出: New time is 18:40, 1 day after print(add_time("23:00", "03:00")) # 输出: New time is 02:00, 1 day after print(add_time("10:00", "02:30")) # 输出: New time is 12:30, same day print(add_time("12:00", "25:00")) # 输出: New time is 13:00, 1 day after
关键说明:
- 借助
datetime对象的date()方法提取日期,两个日期的差值就是跨越午夜的次数(每过一次午夜日期加1) - 根据天数不同调整返回文本,让结果更贴合日常表述习惯
- 保留原代码的类型标注,符合Python类型规范
内容的提问来源于stack exchange,提问作者Oliver Jakubec
相关产品推荐
相关产品推荐

