在我的asp.net应用程序中比较StartDate和EndDate时,我有点困惑。
EndDate: 10/1/2011
StartDate: 9/30/2011
以下if语句根据上面的日期值返回true。
如果strEndDate< strStartDate然后
我认为if语句shoudl返回false。该概念应该是如果EndDate早于StartDate,则显示错误消息。
答案 0 :(得分:3)
我假设你的变量被称为strEndDate
和strStartDate
,因为它们是字符串,而不是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)
不要将它们作为字符串进行比较,将它们作为日期进行比较。