Путаница при сравнении StartDate и EndDate в asp.net - PullRequest
0 голосов
/ 30 сентября 2011

Я немного растерялся, сравнивая StartDate и EndDate в моем приложении asp.net.

EndDate:    10/1/2011
StartDate:  9/30/2011

Оператор if ниже возвращает значение true, основываясь на значениях даты выше.

If strEndDate

Я думаю, что оператор If должен возвращать false.Предполагается, что если EndDate более ранний, чем StartDate, отобразить сообщение об ошибке.

Ответы [ 4 ]

3 голосов
/ 30 сентября 2011

Я предполагаю, что поскольку ваши переменные называются strEndDate и strStartDate, то это строки, а не DateTime s. Так как они являются строками и поскольку '1' <'9' (первые символы в строках), <code>strEndDate действительно "меньше чем" strStartDate.

Преобразовать значения в DateTime перед сравнением:

If DateTime.Parse(strEndDate) < DateTime.Parse(strStartDate) Then
    '...
End If
3 голосов
/ 30 сентября 2011

Если это переменные DateTime, этот код должен иметь значение true. Если нет, вам следует преобразовать их в DateTime.

DateTime start = DateTime.Parse(strStartDate);
DateTime close = DateTime.Parse(strEndDate);

if (close > start)
    //do something

Вы также можете сравнить их так:

if ((close - start).TotalDays > 0)
    //do something

Как отметил Рик Шотт, вы также можете использовать DateTime.Compare

2 голосов
/ 30 сентября 2011

Вы должны использовать DateTime.Compare.

Dim date1 As Date = DateTime.Parse(strStartDate)
Dim date2 As Date = DateTime.Parse(strEndDate)
Dim result As Integer = DateTime.Compare(date1, date2)
Dim relationship As String

If result < 0 Then
   relationship = "is earlier than"
ElseIf result = 0 Then
   relationship = "is the same time as"         
Else
   relationship = "is later than"
End If

Console.WriteLine("{0} {1} {2}", date1, relationship, date2)
' The example displays the following output:
'    8/1/2009 12:00:00 AM is earlier than 8/1/2009 12:00:00 PM
1 голос
/ 30 сентября 2011

Не сравнивайте их как строки, сравнивайте их как даты.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...