日期之间的经典ASP工作日数

时间:2018-10-22 14:44:15

标签: vbscript asp-classic

Classic ASP VBScript中是否可以获取两个日期之间的工作日数?显然,我们具有DateDiff()函数,但这将减少总天数,但是我想省略周末。

2 个答案:

答案 0 :(得分:1)

您是对的,DateDiff()不能解决这个问题,但是可以将其与WeekDay()结合使用,以计算Day是否在周末发生。

通过使用DateDiff()获得天数,然后可以使用For循环逐步使用DateAdd()逐步增加天数,并检查是否增加了天数日期值是一个特定的WeekDay()。然后,我们可以根据此结果决定是否增加一个计数器,该计数器存储了我们得出的工作日数。

下面是如何执行此操作的示例,主要逻辑已封装在一个函数中,您可以将该函数包含在#include脚本文件中以在多个页面中使用。

<%
Function DateDiffWeekDays(d1, d2)
    Dim dy: dy = 0
    Dim dys: dys = DateDiff("d", d1, d2)
    Dim isWeekDay: isWeekDay = False
    Dim wkd
    Dim wd: wd = 0

    For dy = 0 To dys
        wkd = Weekday(DateAdd("d", dy, d1))
        isWeekDay = Not (wkd = vbSunday Or wkd = vbSaturday)
        If isWeekDay Then wd = wd + 1
    Next
    DateDiffWeekDays = wd
End Function

'Example of how to call the function and output to the page
Call Response.Write(DateDiffWeekDays(Date(), CDate("12 Nov 2018")))
%>

输出:

16

这只是一个简单的示例,并未涵盖所有可能的使用情况,其思想是为您提供一个可以进行改进的起点。

答案 1 :(得分:1)

VBScript不包括请求的操作,但是间隔为>>> closest(a, -1) 1 >>> closest(a, 0) 1 >>> closest(a, 1) 1 >>> closest(a, 2) 1 >>> closest(a, 3) 3 >>> closest(a, 4) 4 >>> closest(a, 5) 4 >>> closest(a, 6) 7 >>> closest(a, 11) 12 >>> closest(a, 15) 14 的{​​{1}}返回两个日期之间的星期日数,确保开始和结束日期不在周末,我们可以直接计算工作天数:

DateDiff