获取日期范围(不包括周末) [英] Get date range excluding weekends

查看:66
本文介绍了获取日期范围(不包括周末)的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

大家好;

我想生成不包括周末的结束日期.

我已经尝试过了,但是没有给我预期的结果:

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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆