Maideen Abdul Kader Ответов: 2

Как рассчитать день между двумя датами


Привет
Мне нужно рассчитать между двумя датами в asp.net текстовое поле.

среднее значение 22.04.2018 12.00 вечера до 23.04.2018 12.00 вечера должно быть рассчитано = один день

Пожалуйста, посоветуйте мне

Мейден

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

If True Then
    Dim dt1 As DateTime = Convert.ToDateTime(Me.txtDateFrom.Text)
    Dim dt2 As DateTime = Convert.ToDateTime(Me.txtDateTo.Text)
    Dim ts As TimeSpan = dt2.Subtract(dt1)
    If Convert.ToInt32(ts.Days) >= 0 Then
        Me.txtNoDays.Text = Convert.ToInt32(ts.Days) + 1
    ElseIf dt1 = dt2 Then
        Me.txtNoDays.Text = "Invalid Input"
    End If
End If

2 Ответов

Рейтинг:
2

Maciej Los

В дополнение к решению №1 от OriginalGriff, проверьте это:

Dim s1 = "22.04.2018 12.00 pm"
Dim s2 = "23.04.2018 12.00 pm"

Dim ci As Globalization.CultureInfo = Globalization.CultureInfo.InvariantCulture 
Dim fmt As String = "dd.MM.yyyy HH.mm tt"
Dim dt1 As DateTime = DateTime.Now
Dim dt2 As DateTime = DateTime.Now
Try
	dt1 = DateTime.ParseExact(s1, fmt, ci)
	dt2 = DateTime.ParseExact(s2, fmt, ci)
Catch Ex As Exception
	Console.WriteLine(Ex.Message)
End Try

Dim dayspassed As Integer = dt2.Subtract(dt1).Days
Console.WriteLine("Difference between '{0}' and '{1}' is: {2} day(s)", dt2.ToString("yyyy-MM-dd"), dt1.ToString("yyyy-MM-dd"), dayspassed)


Для получения более подробной информации, пожалуйста, смотрите:
Как преобразовать строки в DateTime | Microsoft Docs[^]
значение datetime.Метод ParseExact (String, String, IFormatProvider) (System)[^]
Выполнение арифметических операций с датами и временем | Microsoft Docs[^]


Рейтинг:
1

OriginalGriff

Снимите "+ 1" с расчета...

Но также не используйте операции преобразования для пользовательского ввода: всегда используйте вместо этого соответствующий метод TryParse (или TryParseExact). Пользователи всегда вводят неверные данные, и в результате ваше приложение не должно аварийно завершать работу. Отображение сообщения об ошибке вместо этого и предоставление им изменений для исправления ошибки гораздо более дружелюбны!