2

似乎我一直在约会方面遇到问题。我正在使用以下代码:

        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 条件为真(错误地)。

顺便说一句,我也试过 Dim LocalDateCultureProvider As New CultureInfo(System.Globalization.CultureInfo.InvariantCulture.ToString)

只是看看这是否导致了问题。我正在尝试构建适用于所有文化的东西。无论本地设置是什么,我都想通过将当前系统日期与作为字符串接收的到期日期进行比较来测试到期日期。请告诉我如何去做,这样我才能得到一致的结果。

TIA,奇达

4

1 回答 1

1

不,您错误地解析了 CurrentDate 。CultureInfo.InvariantCulture 需要前一个月,但您先将其格式化为当天。您正在编写不必要的代码,只需修复:

    If DateTime.Compare(ExpiryDate, DateTime.Now) < 0 Then
于 2012-06-10T05:42:35.623 回答