2013-04-12 3 views
0

Я пытаюсь захватить входные данные из текстового поля путем преобразования его в формат DateTimeпримерки всеобъемлющих наконец FormatException

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); 
      } 

Как я должен ходить?

Благодаря

ответ

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

Вместо того, чтобы использовать исключения, чтобы сделать это, было бы лучше использовать DateTime.TryParse. Это вернет простой true или false, если он может быть преобразован в дату.

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

Сомневаюсь, что на самом деле он проглатывает все исключения. Используя ILSpy, я обнаружил, что в функциях 'TryParse' или их вызываемых функциях обнаружены _no_ исключения. –

+0

@UweKeim Вы правы, весь смысл TryParse заключается в том, что исключение не выбрасывается. – Rik

+1

Отредактировано для уточнения. – Arran

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"; 
0

Попробуйте использовать DateTime.TryParse() метод.

Смежные вопросы