Получение исключения при использовании метода DateTime.Parse

Итак, у меня есть строка «Date: Mon Jan 03 2011 19:29:44 GMT + 0200», и когда я использую DateTime.Parse (date) .ToString ();, я получаю » Строка не была распознана как допустимый DateTime. "

Если я удалю часть «+0200», она будет работать нормально, но, конечно, не показывает правильное местное время. Что в этом плохого?


person user361633    schedule 04.01.2011    source источник


Ответы (3)


Из документации кажется, что DateTime.Parse() понимает только:

  • Обозначение GMT, используемое отдельно, например Mon, Jan 03 2011 17:29:44 GMT или

  • Смещение часового пояса, указанное без указателя GMT, например Mon, Jan 03 2011 19:29:44+02:00.

Возможно, вы захотите преобразовать строку даты во вторую форму.

person Frédéric Hamidi    schedule 04.01.2011

Это просто означает, что смещение часового пояса не является ожидаемой частью строк формата по умолчанию.

Если вы знаете, какой формат ожидаете, я предлагаю вам позвонить в DateTime.ParseExact (или DateTime.TryParseExact), указав формат (ы), чтобы попробовать. Дополнительные сведения см. В документации по строкам настраиваемого формата даты / времени.

person Jon Skeet    schedule 04.01.2011
comment
@ user361633: Не забывайте, что вы можете предоставить несколько шаблонов - я ожидаю, что вы знаете по крайней мере диапазон ожидаемых форматов. - person Jon Skeet; 04.01.2011

У вас две ошибки.

Первое - не используйте метод Parse. Более правильным является TryParse. Во-вторых, при использовании Parse или TryParse без аргументов возникнут проблемы с глобализацией.

Например, посмотрите этот код:

DateTime.Parse ("01.02.2011"); В США это 2 января. В Германии это 1 февраля.

Итак, я рекомендую вам использовать форматы из эта статья.

person Manushin Igor    schedule 04.01.2011