确定 aDate
是否在过去的最佳方法是什么?
目前我有:
If MyDate < Date.Now
您所拥有的是一个合理的起点,但还有许多其他考虑因素需要考虑:
MyDate
是一个DateTime
,你真的需要考虑它Kind
。例如,如果种类是 UTC,您可能应该使用DateTime.UtcNow
. 如果种类是本地的,使用DateTime.Now
. 如果它是未指定的,那么你就有点进退两难了,因为不清楚它到底是什么意思Today
代替Now
, 或UtcNow.Date
UTC 版本。DateTimeOffset
? 这实际上取决于您的数据来源和您要附加的确切含义。(顺便说一句,如果您使用将不同类型的值分成不同类型的日期/时间 API,那么很多这些问题会更加透明。碰巧我正在研究这样的 API - Noda Time :)
如果 DateDiff(DateInterval.Day, MyDate , Date.Now) < 0
我假设您在同一时区工作。
这是一个小代码片段,展示了如何做到这一点:
Dim MyDate As Date = #11/4/2012#
Dim ts As TimeSpan = MyDate.Subtract(Today)
If ts.TotalDays < 0 Then
MsgBox("MyDate is in the past")
ElseIf ts.TotalDays > 0 Then
MsgBox("MyDate is in the future")
Else
MsgBox("MyDate is today")
End If