似乎我一直遇到日期问题。 我正在使用以下代码:
Dim LocalDateCultureProvider As New CultureInfo(CultureInfo.CurrentCulture.ToString)
Dim CurrentDate As DateTime = Convert.ToDateTime(System.DateTime.Now.ToString("dd/MM/yyyy"), System.Globalization.CultureInfo.InvariantCulture)
ExpiryDate = DateTime.ParseExact(strDate, "dd/MM/yyyy", LocalDateCultureProvider)
If DateTime.Compare(ExpiryDate, CurrentDate) < 0 Then
MsgBox("This file has expired.")
Exit Sub
End If
在这里,我将strDate读取为字符串,例如,其值为"29/09/2012"但是,在ExpiryDate行中,它转换为#09/29/2012#,因此在与今天存储在CurrentDate中的日期(在我看来是正确的)作为#10/6/2012#进行比较时,我得到If条件为真(错误)。
顺便说一句,我也试过 将 LocalDateCultureProvider 作为新文化信息(System.Globalization.CultureInfo.InvariantCulture.ToString)
只是为了看看这是否导致了问题。 我正在尝试构建适用于所有文化的东西。 无论本地设置是什么,我都想通过将当前系统日期与我以字符串形式收到的到期日期进行比较来测试到期。 请告诉我如何做到这一点,以便我获得一致的结果。
TIA,奇瓦达
不,您错误地解析了当前日期。 CultureInfo.InvariantCulture 预计在前一个月,但您先将其格式化为当天。 您正在编写不必要的代码,只需使用以下方法修复:
If DateTime.Compare(ExpiryDate, DateTime.Now) < 0 Then