Есть ли в c # функция, которая возвращает дату и время при заданных значениях GMT (от -12 до -1 и от 1 до 12)? - PullRequest
1 голос
/ 25 января 2010

Есть ли в c # функция, которая возвращает дату и время при заданных значениях GMT (от -12 до -1 и от 1 до 12)?

EDIT:

У меня есть выпадающий список, который содержит все значения GMT. Теперь я хочу отобразить дату и время выбранного значения GMT ....

Ответы [ 4 ]

2 голосов
/ 25 января 2010

GMT - среднее время по Гринвичу, верно? Или более известный как UTC?

Я думаю, что вы имеете в виду UTC смещение .

Другими словами, с учетом смещения по Гринвичу, сколько времени в этом месте?

Я думаю, что это

DateTime.SpecifyKind(DateTime.UtcNow + new Timespan(offsetHours,0,0),
                     DateTimeKind.LocalTime);

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

Добавление

Также см. Класс TzTimeZone, который включен в Проект PublicDomain в Codeplex: http://www.codeplex.com/publicdomain.

System.TimeZone, включенный в .NET 2.0, не разрешает приложение для создания экземпляра объекта TimeZone с кратким именем часовой пояс или смещение UTC. Вместо этого класс System.TimeZone «знает» о местном часовом поясе, но больше ничего не делает. Это делает трудно занять произвольное время (скажем, 15:13, 4 октября 2006 г., в Лос-Анджелесе) и отформатируйте его для отображения в произвольном часовом поясе (скажем, Париж).

Класс TzTimeZone предоставляет модель для ряда различных часовые пояса, включая их смещения от UTC и правила, к которым они применяются летнее время.

С этим новым набором классов можно создать часовой пояс из известного набора именованных экземпляров. Также легко отформатировать временная стоимость любой произвольный (названный) часовой пояс. В частности, это легко провести время, как (3:13 вечера 4 октября 2006 года в Лос-Анджелесе) и отформатируйте его для показа в Париже.

0 голосов
/ 25 января 2010

Ответ Пауло должен работать нормально, но структура DateTimeOffset в .NET 3.5, похоже, создана для вашего вопроса.

0 голосов
/ 25 января 2010

Является ли DateTimeOffset тем, что вы ищете? Один из его конструкторов принимает DateTime и смещение.

0 голосов
/ 25 января 2010

Вы можете использовать что-то вроде:

var d = System.DateTime.Now().ToUniversalTime().AddHours(5)
...