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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 15:45:14