0

生年月日を入力し、データをdatetime型でデータベースに送信するC#ウィンドウアプリケーションがあります。コードは次のとおりです。

DateTime dateOfBirth;
try
{
    dateOfBirth = new DateTime(int.Parse(textBox54.Text), int.Parse(textBox53.Text), int.Parse(textBox52.Text));
}
catch (Exception ex)
{
    MessageBox.Show("Invalid");
    return;
}

適切な日付で問題なく動作しますが、アプリケーションをランダムにテストして年に「234」を入力すると、varchar からの datetime からの範囲外の変換エラーがステートメントで発生します

cm.ExecuteNonQuery();

どうすれば捕まえられますか?ありがとう。

4

1 に答える 1

0

DateTime.TryParseExact を使用できます。

更新しました:

    string inputDate = int.Parse(textBox54.Text)+"-"+int.Parse(textBox53.Text)+"-"+int.Parse(textBox52.Text);
    DateTime dateOfBirth ;

    var DateFormat = new[] { "dd/MM/yyyy", "yyyy-MM-dd" };
    if (DateTime.TryParseExact(inputDate, DateFormat, CultureInfo.InvariantCulture, DateTimeStyles.None, out dateOfBirth ))
    {

       //Valid Date
      //Call DB here
    }
    else
    {

        // Invalid Date
    }
于 2013-03-22T09:25:55.073 に答える