用日期减去日期并得到 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)
好吧,我想不出使用 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)