2011-06-28 13 views
0

生年月日の2つのテキストボックスフィールドを検証しようとしています。メンバーがこれら2つのボックスに入力しない場合、「plsは有効な日付形式を入力してください」のようにエラーメッセージが表示されます空の生年月日フィールドを保存しようとしたときにエラーが発生しました。

テキストボックス値を入力せずに保存しようとすると、Datetime DVのようなエラーが表示されます。

文字列が有効なDateTimeとして認識されませんでした。

private void btnCTimetablessave_Click(object sender, EventArgs e) 
{ 
    string dob = tbStartDate.Text; 
    DateTime dv; 
    if (!DateTime.TryParse(dob, out dv)) 
    { 

     MessageBox.Show("pls enter a valid start date"); 
     return; 
    } 

    string format1 = dv.ToString("yyyy-MM-dd"); 
    string dob2 = tbEndDate.Text; 
    DateTime dt2; 
    if (!DateTime.TryParse(dob2, out dt2)) 
    { 
     MessageBox.Show("pls enter valid end date"); 
     return; 
    } 

    string format2 = dt2.ToString("yyyy-MM-dd"); 

まだそれが "文字列が有効な日時として認識されませんでした" datetime Dv

でエラーを示しました。

+0

エラーの原因となっているのはどのような入力ですか? – Greg

答えて

2

明らかに、tbStartDate.Textには有効な日付が含まれていません。少なくとも、あなたの現在の環境設定に従って。

ここではローカライゼーションが問題になることがあります。ここには良い答えがあります:String was not recognized as a valid DateTime " format dd/MM/yyyy"。代わりにTryParseを使用しての

更新

、あなたはParseExactを使用する場合があります:

DateTime.ParseExact(this.Text, "dd/MM/yyyy", null); 

そのように、あなたが期待している入力フォーマットを指定することができます。

1

dateパラメータのdbtypeとは何ですか?引数の同じ型のオブジェクトで値を設定する必要があります。

+1

質問のデータベースへの参照がありません。 – Greg

+0

datatypeは日付 – user682417

+0

です。したがって、日付オブジェクト(dvまたはdt2)でパラメータの値を設定する必要があります。 –

0

"TryParse"と "ParseExact"は "TryParseExact"よりも優れています。また、TryParseExactのオーバーロードの1つは、書式文字列の文字列配列を取ります。したがって、受け入れる入力にさらに柔軟性を持たせることができます。また、DateTimeStylesパラメータを使用すると、パースされる文字列内で発生する空白に柔軟性を追加で指定できます。

関連する問題