获取日期范围(不包括周末) [英] Get date range excluding weekends
本文介绍了获取日期范围(不包括周末)的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
大家好;
我想生成不包括周末的结束日期.
我已经尝试过了,但是没有给我预期的结果:
Hi guys;
I want to generate end date excluding weekends.
I have tried this but didn''t give me expected result:
<pre> <WebMethod()> _
Public Shared Function GenerateEndDate(startDate As String, numberOfDays As Integer) As String
If IsDate(startDate) Then
' generate end date
Dim endDate As Date = CDate(startDate).AddDays(GetNoOfWorkingDays(CDate(startDate), numberOfDays)) 'DateAdd(DateInterval.Day, numberOfDays - 1, CDate(startDate))
' get number of working days
Return endDate.ToShortDateString
End If
Return "N/A"
End Function
Private Shared Function GetNoOfWorkingDays(ByVal startDate As Date, ByVal noOfDays As Int32) As Int32
Dim counter As Integer = 0
Dim endDate As DateTime = DateAdd(DateInterval.Day, noOfDays, startDate)
While startDate < endDate
startDate = startDate.AddDays(1)
Dim dayNoInWeek = CInt(startDate.DayOfWeek)
If dayNoInWeek <> 0 Then
If dayNoInWeek <> 6 Then
counter += 1
End If
End If
End While
Return noOfDays + counter
End Function
推荐答案
这是假设只比较日期,而不是时间,并且工作周是周一至周五
This assumes only dates are compared, not times, and work week is Monday-Friday
private int NumberOfWorkDays(DateTime start, int numberOfDays)
{
int workDays = 0;
DateTime end = start.AddDays(numberOfDays);
while(start != end)
{
if(start.DayOfWeek != DayOfWeek.Saturday && start.DayOfWeek != DayOfWeek.Sunday)
{
workDays++;
}
start = start.AddDays(1);
}
return workDays;
}
这篇关于获取日期范围(不包括周末)的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文