用日期减去日期并得到 diffdate vb.net 的有趣逻辑

Fun Logic to minus date with date and get the diffdate vb.net

好吧,我想不出使用 vb.net 的算法。

所以这是 3 变量

Dim DateFrom as date = '01/09/2015'

Dim DateNow as date = Date.Now

Dim Holiday() as date '' <-- List of holiday dates

所以我想做的是从 DateFrom 和 DateNow 中获取 "Day" diffdate 并排除 Holiday() 数组中的减去日期以及星期六和星期日。

假设我的 DateFrom 是“01/09/2015”,也就是星期二,而我的 DateNow 是“09/09/2015”,也是星期二,在 Holiday() 数组中有“4/09/2015”星期五。 diffdate 的 输出假设为 5 天,因为(DateNow ---差异日减去假日()数组,还减去周六和周日 -- DateFrom)

挠了挠头152.5次还是找不到方法

所以你想确定两个日期之间的工作日数?

您可以使用以下 LINQ 查询:

Dim DateFrom As Date = #9/1/2015#
Dim Holiday() As Date = {#9/4/2015#}
Dim Weekend() As DayOfWeek = {DayOfWeek.Saturday, DayOfWeek.Sunday}

Dim days As Int32 = (Date.Today - DateFrom).Days + 1 '+ 1 to include end day '
Dim workingDaysBetween =
    From d In Enumerable.Range(0, days)
    Let day = DateFrom.AddDays(d)
    Where Not Weekend.Contains(day.DayOfWeek) AndAlso Not Holiday.Contains(day)

Dim countDays As Int32 = workingDaysBetween.Count()

我想你可以用这样的方法解决这个问题:

Dim intTotalDays As Integer = 0

Dim dtStartDate As New DateTime(2015, 10, 1)
Dim dtEndDate As New DateTime(2015, 10, 31)

Dim Holidays As DateTime() = {
    New DateTime(2015, 10, 15),
    New DateTime(2015, 10, 17)
}

For i As Integer = 0 To DateDiff(DateInterval.Day, dtStartDate, dtEndDate)

    Dim dtDay As DateTime = DateAdd(DateInterval.Day, i, dtStartDate)

    If Not dtDay.DayOfWeek = DayOfWeek.Saturday And Not dtDay.DayOfWeek = DayOfWeek.Sunday And Not Holidays.Contains(dtDay) Then
        intTotalDays += 1
    End If

Next i

MsgBox(intTotalDays)