計算工作日

2021-09-10 06:43:27 字數 1833 閱讀 9947

vb、vba中計算工作日(僅剔除星期

六、日)的函式。

function getworkdaycount(startday as date, endday as date) as integer

dim nums as integer, numy as integer

dim weekdaynumy(7, 6) as integer

weekdaynumy(1, 1) = 0

weekdaynumy(1, 2) = 0

weekdaynumy(1, 3) = 0

weekdaynumy(1, 4) = 0

weekdaynumy(1, 5) = 0

weekdaynumy(1, 6) = 1

weekdaynumy(2, 1) = 0

weekdaynumy(2, 2) = 0

weekdaynumy(2, 3) = 0

weekdaynumy(2, 4) = 0

weekdaynumy(2, 5) = 1

weekdaynumy(2, 6) = 2

weekdaynumy(3, 1) = 0

weekdaynumy(3, 2) = 0

weekdaynumy(3, 3) = 0

weekdaynumy(3, 4) = 1

weekdaynumy(3, 5) = 2

weekdaynumy(3, 6) = 2

weekdaynumy(4, 1) = 0

weekdaynumy(4, 2) = 0

weekdaynumy(4, 3) = 1

weekdaynumy(4, 4) = 2

weekdaynumy(4, 5) = 2

weekdaynumy(4, 6) = 2

weekdaynumy(5, 1) = 0

weekdaynumy(5, 2) = 1

weekdaynumy(5, 3) = 2

weekdaynumy(5, 4) = 2

weekdaynumy(5, 5) = 2

weekdaynumy(5, 6) = 2

weekdaynumy(6, 1) = 1

weekdaynumy(6, 2) = 2

weekdaynumy(6, 3) = 2

weekdaynumy(6, 4) = 2

weekdaynumy(6, 5) = 2

weekdaynumy(6, 6) = 2

weekdaynumy(7, 1) = 1

weekdaynumy(7, 2) = 1

weekdaynumy(7, 3) = 1

weekdaynumy(7, 4) = 1

weekdaynumy(7, 5) = 1

weekdaynumy(7, 6) = 1

nums = (endday - startday) \ 7

numy = (endday - startday) mod 7

if nums = 0 and numy = 0 then

getworkdaycount = 0

else

getworkdaycount = endday - startday - nums * 2 - weekdaynumy(weekday(startday), numy)

end if

end function

參考:vb中定義陣列的起始下標預設從0開始。用option base 1語句將陣列預設起始下標設定為 1。如果沒有定義option base的話,或者定義陣列是沒有指定1 to n的方式,預設就是0開始。詳見這個鏈結

動態計算工作日

由table來設定是否為工作日,如果為節假日則設定為非工作日,即talbe會設定每天是否為工作日 帶入的日期必須為工作日。alter function dbo fn workdayadd date datetime days int returns datetime nvarchar 100 asb...

轉貼 工作日的計算

using system using system.data using system.configuration using system.collections using system.web using system.web.security using system.web.ui usin...

sql計算工作日函式

這個演算法還不夠嚴謹,沒有考慮到周 六 日調換假期等細節的情況。1 建節假日表 create table holiday id int identity 1,1 not null name nvarchar 50 collate chinese prc ci as not null begindat...