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

Date Picker控件联动计算30个工作日后日期(排除周末及银行假日)

实现30个工作日后日期计算(排除周末与银行假日)

功能需求

当用户通过Date Picker控件(StartDate)选择日期后,文本框自动显示30个工作日后的日期(需排除周末和银行假日)。

当前实现代码

Switch (
    CountIf(
        BankHolidayDates, 
        BankHolidayDate >= StartDate.SelectedDate, 
        BankHolidayDate <= DateAdd(
            StartDate.SelectedDate,
            Value(gvDaysToDeadline)  +
            RoundDown(gvDaysToDeadline / 5, 0)*2+
            Switch(
                Weekday(StartDate.SelectedDate),
                5,If(Mod(gvDaysToDeadline, 5)>0,2,0),
                4,If(Mod(gvDaysToDeadline, 5)>1,2,0),
                3,If(Mod(gvDaysToDeadline, 5)>2,2,0),
                2,If(Mod(gvDaysToDeadline, 5)>3,2,0),
                1,If(Mod(gvDaysToDeadline, 5)>4,2,0)
            )
        )
    ),
    0,DateAdd(
        StartDate.SelectedDate,
        Value(gvDaysToDeadline)  +
        RoundDown(gvDaysToDeadline / 5, 0)*2+
        Switch(
            Weekday(StartDate.SelectedDate),
            5,If(Mod(gvDaysToDeadline, 5)>0,2,0),
            4,If(Mod(gvDaysToDeadline, 5)>1,2,0),
            3,If(Mod(gvDaysToDeadline, 5)>2,2,0),
            2,If(Mod(gvDaysToDeadline, 5)>3,2,0),
            1,If(Mod(gvDaysToDeadline, 5)>4,2,0)
        )
    ),
    1,DateAdd(
        StartDate.SelectedDate,
        Value(gvDaysToDeadline+1)  +
        RoundDown((gvDaysToDeadline+1) / 5, 0)*2+
        Switch(
            Weekday(StartDate.SelectedDate),
            5,If(Mod(gvDaysToDeadline+1, 5)>0,2,0),
            4,If(Mod(gvDaysToDeadline+1, 5)>1,2,0),
            3,If(Mod(gvDaysToDeadline+1, 5)>2,2,0),
            2,If(Mod(gvDaysToDeadline+1, 5)>3,2,0),
            1,If(Mod(gvDaysToDeadline+1, 5)>4,2,0)
        )
    ),
    2,DateAdd(
        StartDate.SelectedDate,
        Value(gvDaysToDeadline+2)  +
        RoundDown((gvDaysToDeadline+2) / 5, 0)*2+
        Switch(
            Weekday(StartDate.SelectedDate),
            5,If(Mod(gvDaysToDeadline+2, 5)>0,2,0),
            4,If(Mod(gvDaysToDeadline+2, 5)>1,2,0),
            3,If(Mod(gvDaysToDeadline+2, 5)>2,2,0),
            2,If(Mod(gvDaysToDeadline+2, 5)>3,2,0),
            1,If(Mod(gvDaysToDeadline+2, 5)>4,2,0)
        )
    )
)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.25 22:10:58