Вы можете использовать DateTimeOffset, чтобы получить смещение UTC, поэтому вам не нужно копаться в реестре для этой информации.
TimeZone.CurrentTimeZone возвращает дополнительные данные о часовом поясе, а TimeZoneInfo.Local содержит метаданные о часовом поясе (например, поддерживает ли он летнее время, имена для различных состояний и т. Д.).
Обновление: я думаю, что это конкретно отвечает на ваш вопрос:
var tzi = TimeZoneInfo.FindSystemTimeZoneById("Pacific Standard Time");
var dto = new DateTimeOffset(2008, 10, 22, 13, 6, 0, tzi.BaseUtcOffset);
Console.WriteLine(dto);
Console.ReadLine();
Этот код создает DateTime со смещением -8. Установленные часовые пояса по умолчанию перечислены в MSDN .