0

私は date.parse 関数を使用して、テキストボックスの日付入力をフォーマットしています。ただし、将来の日付を入力すると、日付解析機能が失敗します。なぜそうなのですか?日付をフォーマットし、将来の日付も入力する必要があります。

  If IsDate(TransactionDate.Text) Then
            TransactionDate.Text = Date.Parse(TransactionDate.Text)
        Else
            MsgBox("Enter correct Transaction date")
            TransactionDate.Focus()
        End If
4

3 に答える 3

0

私は2013年12月5日に使用しましたが、うまくいきました。

実際にはそうではなかったと思います。2013 年 5 月 12 日を意味していたのに、実際には 2013 年 12 月 5 日として解析したのではないかと思います。

dd/MM/yyyy を意味しているのに対し、MM/dd/yyyy の形式として解析しようとしているようです。

たとえば、使用しているスレッドが米国の文化にあることが原因である可能性があります。

使用することをお勧めしますDateTime.TryParseExact

于 2013-05-12T11:21:14.760 に答える
0

データ文字列の形式を指定する必要があります。日付は、米国 (mm/dd/yyyy) またはヨーロッパ (dd/mm/yyyy)、2 桁の年 (yy) または 4 の多くの形式で書き込むことができます。数字の年 (yyyy)、異なる区切り文字 ( /) と ( -) など。リストは無限です。

期待する日付を明示するか、コードを記述してさまざまな形式を試し、誤った入力に対処する必要があります。

後者のアプローチの危険性は、日付が曖昧になる可能性があることです。「2013 年 1 月 2 日」は 2 月 1 日ですか、それとも 1 月 2 日ですか?

を受け取る のオーバーロードを使用し、Date.TryParse失敗IFormatProviderした場合はエラーを報告します。

dateString = "2008-03-01 10:00"
culture = CultureInfo.CreateSpecificCulture("fr-FR")
styles = DateTimeStyles.AdjustToUniversal Or DateTimeStyles.AssumeLocal
If DateTime.TryParse(dateString, culture, styles, dateResult)
   Console.WriteLine("{0} converted to {1} {2}.", _
                     dateString, dateResult, dateResult.Kind)
Else
   Console.WriteLine("Unable to convert {0} to a date and time.", dateString)
End If
于 2013-05-12T11:21:31.330 に答える
0

DateTime.ParseExact を使用して、形式を渡して提供します。

dateString = "13/05/2013";
  format = "dd-MM-yyyy";
  CultureInfo provider = CultureInfo.InvariantCulture;
  var result = DateTime.ParseExact(dateString, format, provider);
于 2013-05-12T11:25:40.267 に答える