Получение исключения при использовании метода DateTime.Parse - PullRequest
4 голосов
/ 04 января 2011

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

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

Ответы [ 3 ]

7 голосов
/ 04 января 2011

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

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

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

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

4 голосов
/ 04 января 2011

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

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

2 голосов
/ 04 января 2011

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

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

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...