日期在VB.net中无法正确转换

时间:2012-06-10 05:25:30

标签: vb.net date cultureinfo

似乎我一直有日期问题。我使用以下代码:

        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, Chiwda

1 个答案:

答案 0 :(得分:1)

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

    If DateTime.Compare(ExpiryDate, DateTime.Now) < 0 Then