Dot-Net

.NET 日期比較:計算自某個日期以來的工作日數?

  • November 14, 2013

計算自某個日期以來的工作日數的最簡單方法是什麼?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 $$

引用自:https://stackoverflow.com/questions/165887