Среднее время по Гринвичу.NET

Взгляните на язык Common LISP Allegro. Это имеет некоторые библиотеки, включая веб-сервер, специально для веб-разработки.

7
задан John Saunders 12 September 2009 в 22:56
поделиться

3 ответа

GMT ] более или менее равно UTC (всемирное координированное время) (если вы не имеете дело с долями секунд, разницы нет). DateTimeKind , перечисление, которое позволяет вам выбирать, отображать ли время в вашем местном часовом поясе или в формате UTC, встроено в конструктор DateTime . Используя это, мы можем получить эквивалент GMT.

Конструктор , который мы собираемся использовать, выглядит следующим образом:

DateTime(int year, int month, int day, int hour, int minute, int second, int millisecond, DateTimeKind kind)

или (в одном есть аргумент в миллисекундах, в другом его нет):

DateTime(int year, int month, int day, int hour, int minute, int second, DateTimeKind kind)

Чтобы получить DateTime для 1 января 1970 г. по всемирному координированному времени , мы можно использовать:

DateTime inGMT = new DateTime(1970, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc); //using 1st constructor above

или :

DateTime inGMT = new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc); //using 2nd constructor above

ПРИМЕЧАНИЕ : Ниже приводится содержимое перечисления DateTimeKind:

  • Unspecified (может быть местное время или UTC)
  • Utc
  • Local

ОБНОВЛЕНИЕ : Томас Левеск предложил очень творческое решение в своем ответе, однако я не уверен, является ли это наиболее прямым методом и жизнеспособным ли это метод, который можно использовать в любое время. зона. Я думаю, он говорит, что вы можете вычислить DateTimeOffset из DateTime.Now и DateTime.UtcNow и применить вычисленное смещение к 1 января 1970 года в ваш собственный часовой пояс, который дает вам время в формате UTC / GMT. Я не уверен, что существуют простые методы для вычисления смещения к другим часовым поясам , и тогда это становится немного избыточным для вопроса.

ОБНОВЛЕНИЕ №2 : Я добавил еще один конструктор DateTime который выполняет то же самое, но не имеет аргумента миллисекунды. Они взаимозаменяемы.

6
ответ дан 6 December 2019 в 23:10
поделиться

Проверьте структуру DateTimeOffset

РЕДАКТИРОВАТЬ: На самом деле, после дальнейшего чтения о DateTimeOffset , это может быть не самое подходящее решение для того, что вы пытаетесь сделать ... Я думаю, что это наиболее прямой ответ на ваш вопрос:

DateTime epoch = DateTime.SpecifyKind(new DateTime(1970, 1, 1), DateTimeKind.Utc);
3
ответ дан 6 December 2019 в 23:10
поделиться

GMT для всех практических целей совпадает с UTC.

Это означает, что вы можете просто использовать один из конструкторов DateTime который принимает параметр DateTimeKind , устанавливая для него значение DateTimeKind.Utc .

DateTime gmt = new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc);
2
ответ дан 6 December 2019 в 23:10
поделиться
Другие вопросы по тегам:

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