如何实现H:M:S时间判断,自动匹配昨日或今日日期?
完善时间日期匹配逻辑的Python代码实现
需求说明
需实现以下逻辑检查:当输入的H:M:S格式时间晚于当前时间时,为其添加昨日日期;当输入的时间早于当前时间时,为其添加今日日期。
示例1:当前时间为00:10:15,输入00:15:15,输出2022-09-09 00:15:15;
示例2:当前时间为00:10:15,输入00:10:00,输出2022-09-10 00:10:00。
修改后的完整代码
from datetime import datetime, timedelta import pytz # 指定目标时区(这里用欧洲基辅时区,可按需修改) target_tz = pytz.timezone("Europe/Kiev") # 获取当前时区的完整时间对象 current_dt = datetime.now(target_tz) # 获取输入的时分秒 from_time = input("请输入时间(H:M:S):") # 解析输入的时间,生成仅含时分秒的时间对象 input_time = datetime.strptime(from_time, "%H:%M:%S").time() # 比较输入时间与当前时间,确定日期 if input_time > current_dt.time(): # 输入时间晚于当前时间,用昨日日期 target_date = current_dt.date() - timedelta(days=1) else: # 输入时间早于或等于当前时间,用今日日期 target_date = current_dt.date() # 拼接完整的日期时间字符串 full_datetime_str = f"{target_date} {from_time}" # 解析为datetime对象并转换为时间戳(补上时区信息保证准确性) full_dt = datetime.strptime(full_datetime_str, "%Y-%m-%d %H:%M:%S").replace(tzinfo=target_tz) epoch = full_dt.timestamp() # 输出结果 print(f"格式化后的日期时间:{full_datetime_str}") print(f"对应的时间戳:{epoch}")
关键逻辑说明
- 时区统一:全程使用指定时区的时间对象,避免本地时区与目标时区不一致导致的时间偏差
- 时间对比:单独提取当前时间的时分秒部分,与输入时间直接对比,无需提前拼接无效日期
- 日期调整:用
timedelta(days=1)计算昨日日期,逻辑简洁且不易出错 - 时间戳准确性:给解析后的datetime对象补充时区信息,确保转换的时间戳符合目标时区标准
内容的提问来源于stack exchange,提问作者Bonjour
相关产品推荐
相关产品推荐

