VB.NET - подсчет дней между двумя датами с исключениями

Я пытаюсь подсчитать дни между двумя датами, кроме субботы и воскресенья. Я написал этот код до сих пор

Dim startDay As Integer
Dim endDay As Integer
Dim days As Integer
Dim count As Integer

startDay = dtpStartDate.Value.DayOfWeek
endDay = dtpEndDate.Value.DayOfWeek

For days = startDay To endDay
    If days = 0 Or days = 6 Then           'Sunday = 0, Saturday = 6
        count += 1
    End If
Next

    lblNoOfDays.Text = count

Он отлично работает, если вы выберете две даты на одной неделе. (например: с 23 января по 27 января, дает результат 5) Но если я устанавливаю их на даты в разные недели (например, с 23 января по 30 января, дает результат 1), это дает неверные результаты.

Я знаю, что это происходит из-за петли, но я не могу придумать способ преодолеть это. Может ли кто-нибудь дать мне предложение, решение ??

Спасибо


person Isuru    schedule 29.01.2012    source источник
comment
Этот вопрос задавался раньше: stackoverflow.com/questions/165887/, stackoverflow.com/questions/6710296/   -  person Meta-Knight    schedule 29.01.2012


Ответы (2)


Эта функция вычисляет дни, не являющиеся выходными, между двумя датами:

    Public Shared Function WorkingDaysElapsed(ByVal pFromDate As Date, ByVal pToDate As Date) As Integer

        Dim _elapsedDays As Integer = 0
        Dim _weekendDays As DayOfWeek() = {DayOfWeek.Saturday, DayOfWeek.Sunday}

        For i = 0 To (pToDate - pFromDate).Days
            If Not _weekendDays.Contains(pFromDate.AddDays(i).DayOfWeek) Then _elapsedDays += 1
        Next

        Return _elapsedDays

    End Function
person pallares    schedule 29.03.2017

person    schedule
comment
сделал небольшое изменение, (dtpEndDate.Value - dtpStartDate.Value).Days и Dim startDate As Date в моем коде работает отлично! Огромное спасибо :) - person Isuru; 29.01.2012