2012-03-31 17 views
0

YYYY/MM/DDの日付値をテキストボックスからdatetimeに変換しようとしていますが、値が正しければ大丈夫ですが、誤ったデータを入力してデータベースで確認すると、Stringが有効なDateTimeとして認識されないため、エラーが返されます。ここでDateTime.Parse文字列をDateTime形式に変換するとデータベース内のDateTimeフィールドに等しい

が私のコードです:たとえば

protected void btnSubmit_Click(object sender, EventArgs e) 
    { 
     string format = "YYYY-MM-DD HH:MM:SS"; 
     DateTime birthday = DateTime.Parse(txtBday.Text); 
     DataSet ds = new DataSet(); 
     ds = (newService.checkAccount()); 
     if (ds.Tables[0].Rows.Count > 0) 
     { 
      foreach (DataRow dRow in ds.Tables[0].Rows) 
      { 
       string accountNo = dRow["ACCTNO"].ToString(); 
       DateTime birthDate = DateTime.Parse(dRow["DATEOFBIRTH"].ToString()); 
       if (accountNo == txtAccountNo.Text.ToString() && birthDate == birthday) 
       { 
        lblMessage.Text = "<br>Account Number Exist. You may now proceed with the registration<br><br>"; 
        HttpCookie lmsCookie = new HttpCookie("id"); 
        lmsCookie.Value = txtAccountNo.Text; 
        Response.Cookies.Add(lmsCookie); 
        Response.Redirect("Step2.aspx"); 
       } 
       else 
       { 
        Image2.Visible = false; 
        lblMessage.Text = "<br>Please check your information and try again." + "<br>Be sure you are entering the correct information.For further assistance, call (+632) 404-2790.<br><br>"; 
       } 
      } 
     } 
    } 

私は、データベースに一致するデータを入力します、私は入力のいずれかと一致しないデータをつもりならば、プログラムは、そうでない場合は続行されますデータベース内の既存のレコードは、プログラムがエラーをトリガします、Stringは有効なdatetimeとして認識されませんでした。あなたはこれに代えて、バグ以外の理由で失敗する可能性が解析するとき

答えて

3

は(あなたが見てきたように例外がスローされます)
DateTime birthDate = DateTime.Parse(dRow["DATEOFBIRTH"].ToString()) 

DateTime.TryParse使用:

DateTime birthDate; 
if (DateTime.TryParse(dRow["DATEOFBIRTH"].ToString(), out birthDate)) 
{ 
    // Success case 
} 
else 
{ 
    // Handle error case 
} 

あなたはではありません。formatという変数を使用しています。サポートされていない形式をに変換しようとすると、それは例外がスローされます、間違いなく

if (DateTime.TryParseExact(dRow["DATEOFBIRTH"].ToString(), "YYYY/MM/dd", 
          CultureInfo.InvariantCulture, DateTimeStyles.None, 
          out birthDate)) 
... 
+0

ジョン、名前を修正TryParse - > TryParseExact – asktomsk

+0

@asktomsk:いやはや:)完了。 –

+0

もっと簡単に説明したり、それを行うためのサンプルコードを教えてください。 – Dhenn

0

:あなたはフォーマットがどうなるかを知っている(とあなたの質問はところで、あなたのコードと一致しない)場合、TryParseExactを使用する方が良いだろう日時変換する前に、DateTime.TryParseメソッドを使用して解析する必要があります。

0

Sovel、

ステップ1:

this._checkInOutDTO.NgayCham = DateTime.Parse(this.DGVDuLieuVaoRa.Rows [num15] .Cells [1] .Value.ToString())。 // this._checkInOutDTO.NgayCham = Convert.ToDateTime(this.DGVDuLieuVaoRa.Rows [num15] .Cells [1] .Value.ToString());

ステップ2: フォーマット:DD/MM/YYYY

関連する問題