Python中如何让函数返回的日期时间固定为09:00:00
Python日期函数固定返回时间为09:00:00的修改方案
原有代码
def dailyChecksInputDates(): current_date = datetime.now() weekday = current_date.strftime("%A") if weekday.upper() == 'MONDAY': return datetime.now() - timedelta(days=3) else: return datetime.now() - timedelta(days=1) print(ParametersUtil.dailyChecksInputDates())
原有逻辑的日期计算规则(周一返回3天前的日期,其余时间返回1天前的日期)符合预期,仅需要调整返回值的时间部分固定为09:00:00。
修改后代码
直接在计算完目标偏移日期后,调用datetime对象的replace()方法重写时间字段即可,完整适配原调用方式的代码如下:
from datetime import datetime, timedelta class ParametersUtil: @staticmethod def dailyChecksInputDates(): current_date = datetime.now() weekday = current_date.strftime("%A") if weekday.upper() == 'MONDAY': target_date = datetime.now() - timedelta(days=3) else: target_date = datetime.now() - timedelta(days=1) # 固定时间为09:00:00,清零微秒消除时间精度误差 return target_date.replace(hour=9, minute=0, second=0, microsecond=0) print(ParametersUtil.dailyChecksInputDates())
改动说明
- 原有工作日判断、日期偏移的逻辑完全保留,不会改变原本计算得到的年月日结果
replace()方法只会修改传入参数对应的字段,未传入的年、月、日字段会保持原值不变- 额外设置
microsecond=0是为了清除datetime.now()自带的微秒值,保证返回的时间部分完全为09:00:00,不会出现类似09:00:00.123456的结果
内容的提问来源于stack exchange,提问作者Sathish Kumar
相关产品推荐
相关产品推荐

