You need to enable JavaScript to run this app. Python日期比较If语句不生效问题求助 需支持工作日天数计算
优惠活动
大模型
产品
解决方案
定价
更多

Python日期比较If语句不生效问题求助 需支持工作日天数计算

问题排查

核心问题1:判断条件逻辑顺序错误

你当前的判断分支是先校验date_only < minus_2_days,再校验date_only < minus_4_days、date_only < minus_7_days,这个顺序完全不符合逻辑:

  • 所有满足小于减4天、小于减7天的日期,肯定同时满足小于减2天,所以后两个elif分支永远不会被触发
  • 正确的逻辑应该是先判断时间跨度更大的条件,再判断跨度小的,也就是先校验是否小于7天,再4天,再2天。

核心问题2:比较运算符不符合需求

你当前测试用例中,date_only = 2021-06-01,minus_2_days = 2021-06-01,你用的是<(严格小于),相等的场景不会触发判断,自然不会进入任何分支。如果你的需求是「早于等于2天/4天/7天」,把运算符改成<=即可。

修正后的基础版本代码(自然日计算)

import datetime
from datetime import timedelta

def Calc_Date(datestring):
    date_time_ticket = datetime.datetime.strptime(datestring, '%d-%b-%Y %H:%M:%S')
    date_today = datetime.date.today()
    date_only = date_time_ticket.date()
    minus_2_days = date_today - timedelta(days=2)
    minus_4_days = date_today - timedelta(days=4)
    minus_7_days = date_today - timedelta(days=7)
    
    # 调整判断顺序 + 修正运算符
    if date_only <= minus_7_days:
        print('lower than 7')
    elif date_only <= minus_4_days:
        print('lower than 4')
    elif date_only <= minus_2_days:
        print('lower than 2')

工作日统计实现方案

如果需要仅统计工作日,可以用datetime.date自带的weekday()方法判断:返回值0-4对应周一到周五,5、6对应周六周日,计算间隔天数的时候跳过周末即可,示例逻辑如下:

def count_workdays(start_date, end_date):
    workday_count = 0
    current_date = start_date
    while current_date < end_date:
        if current_date.weekday() < 5: # 周一到周五算工作日
            workday_count +=1
        current_date += timedelta(days=1)
    return workday_count

调用时传入date_only和date_today,判断返回的工作日数是否大于等于2/4/7即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.17 19:45:04