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