Почему не может DateTime. Синтаксический анализ синтаксического анализа дата UTC

Я не использую web2py. Но я взглянул на исходный код, и это ужасно по такому количеству причин. Для одного определения базы данных, а также представления и модели и я не знаем то, что, оценены против глобального словаря значений. Похоже на PHP в том отношении (это обходит семантику Python в поведении имени), и очень неэффективно, и я мог предположить, что трудно поддержать.

я понятия не имею, куда весь этот пух о web2py прибывает из в последнее время, но я действительно не вижу причины, почему любой хотел бы использовать его.

Что случилось с Django или Опорами? Что делает web2py, делают это, Вы не можете сделать с Django в нескольких строках кода с лучшей производительностью, кодировать, это легче считать и на установленной платформе, где тонны разработчиков вскочат и решат проблемы в мгновение ока, если они появятся. (Ну, существуют исключения, которые я должен допустить, но в целом разработчики решают проблемы быстро)

59
задан John Topley 18 November 2009 в 15:08
поделиться

5 ответов

It can't parse that string because "UTC" is not a valid time zone designator.

UTC time is denoted by adding a 'Z' to the end of the time string, so your parsing code should look like this:

DateTime.Parse("Tue, 1 Jan 2008 00:00:00Z");

From the Wikipedia article on ISO 8601

If the time is in UTC, add a 'Z' directly after the time without a space. 'Z' is the zone designator for the zero UTC offset. "09:30 UTC" is therefore represented as "09:30Z" or "0930Z". "14:45:15 UTC" would be "14:45:15Z" or "144515Z".

UTC time is also known as 'Zulu' time, since 'Zulu' is the NATO phonetic alphabet word for 'Z'.

71
ответ дан 24 November 2019 в 18:02
поделиться

Это недопустимый формат, однако «Вт, 1 января 2008 г., 00:00:00 GMT» является.

В документации указано следующее:

Строка, которая включает информацию о часовом поясе и соответствует ISO 8601. Для Например, первая из следующих двух строк обозначает всемирное координированное время (UTC); второй обозначает время в часовом поясе на семь часов раньше, чем UTC:

2008-11-01T19: 35: 00.0000000Z

Строка, которая включает указатель GMT и соответствует формату времени RFC 1123. Например:

Sat, 01 Nov 2008 19:35:00 GMT

Строка, которая включает дату и время вместе с информацией о смещении часового пояса. Например:

01.03.2009 05:42:00 -5: 00

7
ответ дан 24 November 2019 в 18:02
поделиться

или использовать AdjustToUniversal DateTimeStyle при вызове

DateTime.ParseExact(String, String[], IFormatProvider, DateTimeStyles)
12
ответ дан 24 November 2019 в 18:02
поделиться

Not sure why, but you can wrap DateTime.ToUniversalTime in a try / catch and achieve the same result in more code.

Good luck.

-5
ответ дан 24 November 2019 в 18:02
поделиться

Вам необходимо указать формат:

DateTime date = DateTime.ParseExact(
    "Tue, 1 Jan 2008 00:00:00 UTC", 
    "ddd, d MMM yyyy HH:mm:ss UTC", 
    CultureInfo.InvariantCulture);
17
ответ дан 24 November 2019 в 18:02
поделиться
Другие вопросы по тегам:

Похожие вопросы: