NyikoB Ответов: 2

Количество календарных дней в календаре VB.NET


Я разработал программу, в которой у меня есть два текстовых поля с именами дата начала и дата окончания. Другое текстовое поле предназначено для общего количества дней. Пользователь выбрал начало в календаре, а также дату окончания. Мне нужно, чтобы система рассчитывала количество дней на основе выбора из календаря. У меня есть код, который я пробовал, но не работает должным образом. Например, если событие происходит в течение одного дня (скажем, с 17 мая 2020 года по 17 мая 2020 года), то общее количество дней будет равно нулю вместо одного. Я приложил код, который попробовал.

Что я уже пробовал:

Dim dt1 As DateTime = Convert.ToDateTime(DateTimePicker1.Text)
        Dim dt2 As DateTime = Convert.ToDateTime(DateTimePicker2.Text)
            Dim ts As TimeSpan = dt2.Subtract(dt1)

            If Convert.ToInt32(ts.Days) >= 0 Then
                txtDays.Text = Convert.ToInt32(ts.Days)

            Else
                MessageBox.Show("Start date cannot be older than end date", "Invalid Input", MessageBoxButtons.OK, MessageBoxIcon.Error)
            End If

Richard MacCutchan

Это верно, есть нулевые дни между 17 мая и 17 мая. Если вы хотите включить первый (или последний) день, то добавьте 1 к общей сумме. Также не используйте Convert.ToInt32 везде, особенно для значений, которые уже являются целочисленными типами.

NyikoB

Спасибо он работает просто добавив 1

2 Ответов

Рейтинг:
9

codejet

Вот функция, которая работает для меня

Private Function GetNumDays (StartDate As Date, EndDate As Date ) As Integer 
   EndDate = EndDate.AddDays(1) 
   Dim NumDays As Integer = 0 
   While StartDate < EndDate 
        NumDays+=1
        StartDate = StartDate.AddDays(1) 
   End While

Return NumDays
End Function 


Рейтинг:
20

Maciej Los

Вам не нужен цикл while-wend (Решение №1).

Взгляните на это:

Dim d1 As DateTime = New DateTime(2020, 5, 1)
DIm d2 As DateTime = DateTime.Today()

Dim result = (d2-d1).TotalDays
Console.WriteLine(result)


Для получения более подробной информации, пожалуйста, смотрите: Период Структуры (Система) | Майкрософт Документы[^]