Единственный способ сделать это следующим образом:
string zoneId = "Central European Standard Time";
TimeZoneInfo tzi = TimeZoneInfo.FindSystemTimeZoneById(zoneId);
DateTime result = TimeZoneInfo.ConvertTimeFromUtc(DateTime.UtcNow,tzi);
Console.WriteLine("Time is " + result + " in Denmark");
Использование класса TimeZoneInfo - единственный надежный способ в .Net конвертировать в / из разных часовых поясов и получать правильные преобразования летнего времени.
TimeZoneInfo.ConvertTimeToUtc(dtLocal,tzi)
- обратное преобразование из местного времени в обычное время.
Для строк TimeZone Id вы можете запустить бит кода здесь ...
foreach( var tz in TimeZoneInfo.GetSystemTimeZones() )
{
Console.WriteLine(tz.DisplayName + " is Id=','" + tz.Id + "'");
}