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

如何在Python中使用datetime计算指定时间字符串与当前时间的差值

用Python datetime模块计算指定时间字符串与当前时间差值的方法

核心思路

单独的时分秒时间对象无法直接做差值计算,需要先把字符串解析为时间对象后,和当前日期拼接为完整的datetime对象再计算。

具体实现步骤

  • 导入datetime模块相关类
  • 用strptime()方法将06:05:00格式的字符串解析为time对象,格式符使用%H:%M:%S对应24小时制时分秒格式
  • 调用datetime.now()获取当前本地时间,提取当前日期和解析好的目标时间拼接为完整的目标datetime对象
  • 两个datetime对象直接做减法得到timedelta类型的差值结果

可直接运行的代码示例

from datetime import datetime, timedelta

# 待计算的目标时间字符串
target_time_str = "06:05:00"
# 解析为时分秒的time对象
target_time = datetime.strptime(target_time_str, "%H:%M:%S").time()
# 获取当前系统时间
current_datetime = datetime.now()
# 拼接为当天的完整目标datetime
target_datetime = datetime.combine(current_datetime.date(), target_time)

# 计算时间差
diff = target_datetime - current_datetime

# 结果处理
diff_seconds = diff.total_seconds()
if diff_seconds > 0:
    print(f"距离目标时间还有:{diff_seconds//3600}小时 {(diff_seconds%3600)//60}分钟 {int(diff_seconds%60)}秒")
else:
    # 如果需要自动计算到次日的目标时间差值,打开下面的注释即可
    # diff = (target_datetime + timedelta(days=1)) - current_datetime
    # diff_seconds = diff.total_seconds()
    # print(f"距离次日目标时间还有:{diff_seconds//3600}小时 {(diff_seconds%3600)//60}分钟 {int(diff_seconds%60)}秒")
    print(f"目标时间已过:{-diff_seconds//3600}小时 {(-diff_seconds%3600)//60}分钟 {int(-diff_seconds%60)}秒")

补充说明

  • 如果你的时间字符串是12小时制,需要把格式符里的%H换成%I,并且在格式末尾加上%p匹配AM/PM标识
  • 差值timedelta对象自带days、seconds、microseconds三个属性,total_seconds()方法可以返回差值对应的总秒数,方便做单位换算

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 13:09:01