VisualBasic實(shí)現(xiàn)某一天的下/上一個(gè)星期幾是那一天

字號(hào):

參數(shù) : 您相信嗎?這個(gè)模組的寫(xiě)法比用任何其他的方法快幾十倍!參數(shù)如下:
    1:以那一天為基準(zhǔn)日?
    2:(Optional) 要找的是星期幾?若不指定,預(yù)設(shè)值為星期六
    3:(Optional) 要往前 (過(guò)去) 找或往后 (未來(lái)) 找?
    若不指定,預(yù)設(shè)值為往后 (未來(lái)) 找
    程序碼
    Public Function SpecificWeekday(ByVal D As Date, Optional ByVal WhatDay As VbDayOfWeek = vbSaturday, Optional GetNext As Boolean = True) As Date
    SpecificWeekday = (((D - WhatDay + GetNext) \ 7) - GetNext) * 7 + WhatDay
    End Function
    或許您想知道程序?yàn)槭裁催@樣寫(xiě)?
    您知道嗎?在 VB 中,其所有日期函數(shù)的基準(zhǔn)日 (第0天) 是 1899年12月30日 (星期六),第一天就是 1899年12月31日 (星期日),所以 VB 的 WeekDay 函數(shù)算法其實(shí)就是 (Date - 1) Mod 7 + 1。
    返回值
    日期
    實(shí)例 :
    我想知道以下日子各是那一天?
    上個(gè)星期一:SpecificWeekday(Now, vbMonday, False)
    下個(gè)星期六:SpecificWeekday(Now)
    2000年9月9日的下一個(gè)星期五:SpecificWeekday("09/09/2000", vbFriday)