在asp.net中比较StartDate和EndDate时会产生混淆

时间:2011-09-30 18:21:38

标签: asp.net vb.net date

在我的asp.net应用程序中比较StartDate和EndDate时,我有点困惑。

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

以下if语句根据上面的日期值返回true。

如果strEndDate< strStartDate然后

我认为if语句shoudl返回false。该概念应该是如果EndDate早于StartDate,则显示错误消息。

4 个答案:

答案 0 :(得分:3)

我假设你的变量被称为strEndDatestrStartDate,因为它们是字符串,而不是DateTime。因为它们是字符串,并且因为'1'< '9'(字符串中的第一个字符),strEndDate确实“小于”strStartDate

在比较之前将值转换为DateTime

If DateTime.Parse(strEndDate) < DateTime.Parse(strStartDate) Then
    '...
End If

答案 1 :(得分:3)

如果这些是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

正如Rick Schott指出的那样,你也可以使用DateTime.Compare

答案 2 :(得分:2)

您应该使用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

答案 3 :(得分:1)

不要将它们作为字符串进行比较,将它们作为日期进行比较。