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# として保存されます (私の意見では正しく)。

ところで、Dim LocalDateCultureProvider As New CultureInfo(System.Globalization.CultureInfo.InvariantCulture.ToString) も試しました

それが問題の原因であるかどうかを確認するだけです。私はすべての文化で機能するものを作ろうとしています. ローカル設定が何であれ、現在のシステム日付を文字列として受け取った有効期限と比較して、有効期限をテストしたいと考えています。安定した結果が得られるようにする方法を教えてください。

千田ティア

4

1 に答える 1

1

いいえ、CurrentDate を正しく解析していません。CultureInfo.InvariantCulture は、日の前の月を想定していますが、最初に日でフォーマットしました。不要なコードを書いています。単純に次のように修正します。

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