0

テキストボックスがあります-DateOfBirth データの検証からデータベースへの保存まで、次の手順に従います。

ステップ 1: テキストを送信するときに、日付が正しい形式 (dd/mm/yyyy) であるかどうかを検証します。

string Pattern = @"^(0?[1-9]|[12][0-9]|3[01])[/](0?[1-9]|1[012])[/](19|20)\d\d";

ステップ 2: 形式が正しければ、テキスト ボックスの入力値を日時形式に変換します。

IFormatProvider theCultureInfo = new System.Globalization.CultureInfo("en-GB", true);
DOB = DateTime.ParseExact(txtDOB.Value, "dd/mm/yyyy", theCultureInfo);

ステップ 3: 次に、値をデータベースに送信し、テーブルにそのまま保存します。

ここで問題が発生しました:
日付「04/04/2012」の場合、すべて正常に動作します。
しかし、日付「2012 年 4 月 4 日」または「2012 年 4 月 4 日」を送信すると、ステップ 2 で例外がスローされます。

String was not recognized as a valid DateTime.

この問題を処理するにはどうすればよいですか?

ステップ 2 をエスケープし、代わりにデータベース クエリで変換を行う必要がありますか ???

4

1 に答える 1

4

このメソッドは、日付に 2 つの場所があり、値が 1 つしか指定されていないことを想定しているため、問題を解決するにdは、ParseExactフォーマットから 1 つを削除してください。

IFormatProvider theCultureInfo = new System.Globalization.CultureInfo("en-GB", true);
DOB = DateTime.ParseExact(txtDOB.Value, "d/M/yyyy", theCultureInfo);
于 2012-12-17T12:53:07.707 に答える