try-catch-finally formatexception

时间:2013-04-12 09:29:16

标签: c# datetime try-catch-finally

我尝试通过将输入数据转换为DateTime格式

来捕获文本框中的输入数据
string yy = string.Format("{0:T}", textBox1.Text);

我希望使用Try-Catch-Finally生成Systm.FormatException错误并将其显示在另一个文本框中

try 
{
 DateTime XF = Convert.ToDateTime(yy); 
}
 catch (FormatException)    
       { 
       textBox5.Text = "incorrect time"; 
       }
   finally 
          {
           DateTime XF = Convert.ToDateTime(yy); 
           textBox5.Text = Convert.ToString(XF.Hour + XF.Minute + XF.Second); 
          }

我该怎么回事?

由于

4 个答案:

答案 0 :(得分:2)

最好不要使用例外来执行此操作,而是使用DateTime.TryParse。如果可以将其转换为日期,则会返回简单的truefalse

http://msdn.microsoft.com/en-us/library/ch92fbc1.aspx

DateTime xf;
bool canBeConverted = DateTime.TryParse(yy, out xf);
if (!canBeConverted) { textBox5.Text = "incorrect time"; }

答案 1 :(得分:0)

如果您不确定格式是否正确,则应使用DateTime.TryParse()DateTime.TryParseExact()。不需要例外,这些例外很慢且不太清楚。

string dateString;
DateTime result;
if (DateTime.TryParse(dateString, result))
{
    // it's a recognized as a DateTime
}
else
{
    // it's not recognized as a DateTime
}

答案 2 :(得分:0)

您可以考虑使用DateTime.TryParseExact or DateTime.TryParse Method

例如:

    string dateString = "Mon 16 Jun 8:30 AM 2008";
string format = "ddd dd MMM h:mm tt yyyy";
DateTime dateTime;
if (DateTime.TryParseExact(dateString, format, CultureInfo.InvariantCulture,
    DateTimeStyles.None, out dateTime))
{
    textBox5.Text = "correct time";
}
    else
      textBox5.Text = "incorrect time";

答案 3 :(得分:0)

尝试使用DateTime.TryParse()方法。