Строка в Datetime не может конвертировать - C # - PullRequest
1 голос
/ 31 марта 2012

Я нашел пример в MSDN для преобразования строки в дату и время. Но это не работает, попадаем в ловушку (). Почему этот блок кода не работает?

DateTime dateValue;
      string dateString = "2/16/2008 12:15:12 PM";
      try {
         dateValue = DateTime.Parse(dateString);
         Console.WriteLine("'{0}' converted to {1}.", dateString, dateValue);
      }   
      catch (FormatException) {
         Console.WriteLine("Unable to convert '{0}'.", dateString);
      }

Ответы [ 2 ]

5 голосов
/ 31 марта 2012

Вы используете, какой бы ни была идея современной культуры о формате даты / времени - и я предполагаю, что вы находитесь в культуре, где день обычно наступает раньше месяца.

Если вы знаетеформат, я бы обычно использовал инвариантную культуру и TryParseExact - определенно не используйте Parse и блок catch;либо используйте TryParseExact или TryParse.В этом случае:

if (DateTime.TryParseExact(dateString, "M/d/yyyy hh:mm:ss tt",
                           CultureInfo.InvariantCulture, 0, out dateValue))
{
    Console.WriteLine("'{0}' converted to {1}.", dateString, dateValue);
}
else
{
    Console.WriteLine("Unable to convert '{0}'.", dateString);
}

Если вы не знаете формат ввода, но знаете, какую культуру использовать, я бы просто использовал DateTime.TryParse с соответствующей культурой.

1 голос
/ 31 марта 2012

Попробуйте использовать ParseExact, передав соответствующий провайдер формата, как в этом примере:

string dateString = "2/16/2008 12:15:12 PM"; 
    string format = "M/dd/yyyy hh:mm:ss tt ";

    DateTime dateTime = DateTime.ParseExact(dateString, format,
        CultureInfo.InvariantCulture);
...