Python如何休眠至指定时间戳并打印剩余时分秒?
Python实现休眠至指定时间并显示剩余时长
核心思路
- 将目标时间字符串转换为Python可识别的
datetime对象 - 计算当前时间与目标时间的差值,判断目标时间是否在未来
- 循环更新剩余时长并格式化展示,直到到达目标时间点
实现代码
import datetime import time # 你的目标时间字符串 target_time_str = "23-03-2023 10:11:00" # 按"日-月-年 时:分:秒"格式解析为datetime对象 target_time = datetime.datetime.strptime(target_time_str, "%d-%m-%Y %H:%M:%S") while True: # 获取当前时间 current_time = datetime.datetime.now() # 计算目标时间与当前时间的差值 time_diff = target_time - current_time # 若目标时间已过,终止循环 if time_diff.total_seconds() <= 0: print("已到达目标时间") break # 将总秒数转换为小时-分钟-秒格式 total_seconds = int(time_diff.total_seconds()) hours = total_seconds // 3600 minutes = (total_seconds % 3600) // 60 seconds = total_seconds % 60 # 用\r实现同一行刷新打印,避免刷屏 print(f"剩余时间: {hours:02d}-{minutes:02d}-{seconds:02d}", end="\r") # 每秒更新一次剩余时间,降低资源占用 time.sleep(1)
关键细节说明
时间格式解析:
strptime的格式串%d-%m-%Y %H:%M:%S完全匹配你的时间字符串规则:%d:两位数字的日期(如23)%m:两位数字的月份(如03)%Y:四位数字的年份(如2023)%H:24小时制的小时(如10)%M:两位数字的分钟(如11)%S:两位数字的秒数(如00)
这一步是把人类可读的字符串转成程序能计算的时间对象,是所有后续操作的基础。
时间差计算:
target_time - current_time得到的timedelta对象,包含了两个时间的精确差值。通过total_seconds()可以将差值转为总秒数,方便拆分出小时、分钟、秒。循环刷新逻辑:用
while True持续检测时间,每次休眠1秒后重新计算差值,确保剩余时长实时更新。end="\r"让新的打印内容覆盖当前行,避免产生大量冗余输出。边界处理:加入时间差小于等于0的判断,防止目标时间已过时程序陷入无限循环。
与你提到的示例代码区别
你看到的示例是计算已经消耗的时间(当前时间减过去时间),而我们的需求是计算到未来时间的剩余时间(目标时间减当前时间),两者逻辑方向完全相反,所以那个示例并不适用于你的场景。
内容的提问来源于stack exchange,提问作者realsuspection
相关产品推荐
相关产品推荐

