-1

确定 aDate是否在过去的最佳方法是什么?

目前我有:

If MyDate < Date.Now
4

3 回答 3

1

您所拥有的是一个合理的起点,但还有许多其他考虑因素需要考虑:

  • 假设MyDate是一个DateTime,你真的需要考虑它Kind。例如,如果种类是 UTC,您可能应该使用DateTime.UtcNow. 如果种类是本地的,使用DateTime.Now. 如果它是未指定的,那么你就有点进退两难了,因为不清楚它到底是什么意思
  • 你的问题是关于“日期”的——这个值真的只是代表一个日期,还是一个日期和时间?如果它只是一个日期,您可能想要Today代替Now, 或UtcNow.DateUTC 版本。
  • 您需要考虑时区吗?你可能会更好地使用DateTimeOffset? 这实际上取决于您的数据来源和您要附加的确切含义。

(顺便说一句,如果您使用将不同类型的值分成不同类型的日期/时间 API,那么很多这些问题会更加透明。碰巧我正在研究这样的 API - Noda Time :)

于 2012-11-03T10:49:33.077 回答
0

如果 DateDiff(DateInterval.Day, MyDate , Date.Now) < 0

于 2012-11-03T10:49:16.997 回答
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
于 2012-11-03T11:57:26.127 回答