Преобразование строки в дату в .net


8

Я читаю текст из плоского файла в C# и проверяю, являются ли определенные значения датами. Они могут быть в формате YYYYMMDD или в формате MM/DD/YY. Каков самый простой способ сделать это в .Net?

26
string[] formats = {"yyyyMMdd", "MM/dd/yy"}; 
var Result = DateTime.ParseExact(input, formats, CultureInfo.CurrentCulture, DateTimeStyles.None); 

или

DateTime result; 
string[] formats = {"yyyyMMdd", "MM/dd/yy"}; 
DateTime.TryParseExact(input, formats, CultureInfo.CurrentCulture, DateTimeStyles.None, out result); 

Более подробная информация в документации MSDN по ParseExact и TryParseExact.

  0

Это лучше, чем у меня. Не знал, что вы можете сделать строковый массив для форматов. Очень хорошо! 23 сен. 082008-09-23 19:42:00

  0

Еще лучше! Только то, что мне было нужно. 23 сен. 082008-09-23 19:57:04

  0

Убедитесь, что вы проверяете возвращаемое значение DateTime.TryParseExact (...), поскольку это будет единственный способ узнать, удалось ли это или нет. 24 сен. 082008-09-24 00:11:22


3

DateTime.TryParse метод

  0

Поскольку я не могу отредактировать ваш ответ, я подумал, что это может помочь предоставить ссылку на статью MSDN для этого метода. http://msdn.microsoft.com/en-us/library/ch92fbc1.aspx 23 сен. 082008-09-23 19:39:50

  0

[@Yadyn]: я понял, что intellisense будет достаточно, но я добавил, что ссылка была полной - спасибо! 25 сен. 082008-09-25 18:38:24


0

Вы также можете сделать Convert.ToDateTime

не уверен, что преимущества обоих


0

Использование TryParse не будет бросать исключение, если это не удается. Кроме того, TryParse вернет True/False, указывая на успех преобразования.

С уважением ...


3

вы можете попробовать также TryParseExact для набора точного формата. , документация: http://msdn.microsoft.com/en-us/library/ms131044.aspx

, например.

DateTime outDt; 
bool blnYYYMMDD = 
    DateTime.TryParseExact(yourString,"yyyyMMdd" 
          ,CultureInfo.CurrentCulture,DateTimeStyles.None 
          , out outDt); 

Надеюсь, я вам помогу.

  0

Чувак! Это так полезно, я потерял почти час за этим, хотя я знаю, что я это сделал раньше. 31 мар. 092009-03-31 08:46:31


0

Вы можете использовать метод TryParse для проверки правильности и разбора в одно и то же время.

DateTime output; 
string input = "09/23/2008"; 
if (DateTime.TryParseExact(input,"MM/dd/yy", DateTimeFormatInfo.InvariantInfo, DateTimeStyles.None, out output) || DateTime.TryParseExact(input,"yyyyMMdd", DateTimeFormatInfo.InvariantInfo, DateTimeStyles.None, out output)) 
{ 
    //handle valid date 
} 
else 
{ 
    //handle invalid date 
}