发布于2026-07-22 阅读(0)
扫一扫,手机访问
在实际开发中,经常需要判断某个日期落在指定时间段内的第几周——比如排班系统、课程表计算或者周期报表生成。下面这段 VBScript 函数就是专门解决这个问题的,思路很直接:从起始日期开始逐日遍历,每遇到一个周六(Weekday=7)就计为一周的结束,从而累计周数。让我们直接看代码。
Function CalculateWeekNo(BeginDate,EndDate,InputDate)
dim wdate(500,8)
z=0
x=0
strlong=len(CStr(inputdate))-9
inputdate=cdate(left(CStr(inputdate),strlong))
for i=cdate(BeginDate) to cdate(EndDate)
if inputdate=i then
x=z
Exit For
end if
if weekday(i)=7 then
z=z+1
end if
next
CalculateWeekNo=x
end Function
值得注意的细节是,函数在开始处对 InputDate 做了字符串截取处理——去掉末尾可能的时间部分(比如“2025-03-10 14:30”会变成“2025-03-10”),再转成日期类型。这在实际应用中很常见,因为传入的参数有时会带有时分秒。然后通过一个 for 循环从起始日期扫描到结束日期,每次遇到周六就把周计数器 z 加1,直到找到与输入日期匹配的那一天,此时 z 的值就是该日期所在周的序号(从0开始)。
举个例子:如果起始日期是周一,结束日期是下周日,那么第一个周六对应第1周,第二个周六对应第2周……而如果输入日期恰好是第一个周六,函数返回1。需要留意的是,这里的“第几星期”是以周六作为周的分界线——这在某些欧美风格的日历系统中是常见的做法,但如果你需要以周一或周日为分界,只需修改 weekday(i)=7 这一判断条件即可。
另外,代码中声明了一个数组 wdate(500,8),看起来是预留了扩展空间,但在当前逻辑中并未实际使用。这可能是早期版本留下的冗余,并不影响功能。
下面这张图总结了函数的整体流程,方便快速理解:
[1]
上一篇:如何让用户也能修改密码?
下一篇:如何验证日期输入是否正确?
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
正版软件
正版软件
正版软件
正版软件
正版软件
1
2
3
7
8