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

如何在ColdFusion中按工作日(周一至周五)规则高亮日期对应表格行

这个需求完全可以实现,核心是先实现「两个日期之间仅统计周一到周五的工作日天数」的计算逻辑,再替换原有判断里的自然日天数变量即可。

第一步:实现工作日天数计算函数

先写一个ColdFusion自定义函数,用来计算收到日期到当前日期的工作日天数,自动排除周六、周日:

<!-- 自定义函数:计算两个日期之间的工作日天数(仅统计周一至周五) -->
<cffunction name="getWorkDaysDiff" returntype="numeric" access="public">
    <cfargument name="startDate" type="date" required="yes">
    <cfargument name="endDate" type="date" required="yes" default="#now()#">
    <cfset var workDays = 0>
    <cfset var currentDate = arguments.startDate>
    <cfloop condition="dateCompare(currentDate, arguments.endDate) <= 0">
        <!-- dayOfWeek返回值规则:1=周日、2=周一...6=周六,排除周末两天 -->
        <cfif dayOfWeek(currentDate) neq 1 and dayOfWeek(currentDate) neq 7>
            <cfset workDays++>
        </cfif>
        <cfset currentDate = dateAdd("d", 1, currentDate)>
    </cfloop>
    <!-- 返回间隔的工作日天数,和原有DAYS_RECEIVED逻辑对齐 -->
    <cfreturn workDays - 1>
</cffunction>

第二步:替换原有判断逻辑

把原有代码里的自然日变量DAYS_RECEIVED替换为上面函数计算出的工作日天数,按照你要求的「过去2个工作日高亮黄色」调整判断条件即可:

<!-- RECEIVED_DATE替换为你实际存储收到日期的变量名 -->
<cfset WORK_DAYS_SINCE_RECEIVED = getWorkDaysDiff(RECEIVED_DATE)>
<cfif ROUTING_NAME eq 'Inspection Required' and INSPECTION_STATUS eq 'NOT INSPECTED'>
    <!-- 超过3个工作日标红,可根据需求自行调整阈值 -->
    <cfif WORK_DAYS_SINCE_RECEIVED gt 3>
        <td title='Part' width="200" bgcolor="ff3333" align="center">#PART#</td>
    <!-- 刚好过去2个工作日标黄 -->
    <cfelseif WORK_DAYS_SINCE_RECEIVED eq 2>
        <td title='Part' width="200" bgcolor="FFFF00" align="center">#PART#</td>
    <cfelse>
        <!-- 其余情况使用默认样式 -->
        <td title='Part' width="200" align="center">#PART#</td>
    </cfif>
</cfif>

如果后续需要排除法定节假日,只需要在函数的判断条件里增加一步,校验当前日期是否在你维护的法定节假日列表中即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 14:24:04