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 года в Лос-Анджелесе) и
отформатируйте его для показа в Париже.