Dot-Net
.NET 日期比較:計算自某個日期以來的工作日數?
計算自某個日期以來的工作日數的最簡單方法是什麼?VB.NET 首選,但 C# 沒問題。
“工作日”是指除週六和周日之外的所有日子。如果該算法還可以考慮不應計為工作日的特定“排除”日期列表,那將是肉汁。
提前感謝貢獻的天才。
以下是 VB 中史蒂夫公式的範例,不帶假期減法:
Function CalcBusinessDays(ByVal DStart As Date, ByVal DEnd As Date) As Decimal Dim Days As Decimal = DateDiff(DateInterval.Day, DStart, DEnd) Dim Weeks As Integer = Days / 7 Dim BusinessDays As Decimal = Days - (Weeks * 2) Return BusinessDays Days = Nothing Weeks = Nothing BusinessDays = Nothing End Function
一般來說(無程式碼) -
- 減去日期得到天數
- 除以 7 得到週數
- 減去週數乘以 2
- 計算日期範圍內的假期日期數
- 減去那個數
擺弄開始/結束日期,使它們從星期一到星期一,然後加回差異
$$ apologies for the no-code generalities, it’s late $$ $$ c.f. endDate.Subtract(startDate).TotalDays $$