Получить ПК TimeZone на C#
В настоящее время я занимаюсь разработкой asp - C# в качестве внутреннего кода. Я хочу получить текущий часовой пояс, который был установлен на ПК.
Приведенный ниже код по-прежнему определяет правильный часовой пояс моей текущей области (+8GMT), хотя я уже изменил настройки часового пояса своего ПК на другой часовой пояс.
Я хочу получить смещение часового пояса, указанное в настройках даты на ПК. Может ли кто-нибудь помочь мне в этом. Ниже мой код до сих пор.
public TimeSpan currentOffset;
public DateTime utc;
public DateTime local;
this.utc = TimeZoneInfo.ConvertTimeBySystemTimeZoneId(DateTime.Now, TimeZoneInfo.Utc.Id);
this.local = TimeZoneInfo.ConvertTimeBySystemTimeZoneId(DateTime.Now, TimeZoneInfo.Local.Id);
this.currentOffset = this.local.Subtract(this.utc);
2 ответа
В дополнение к ответу Дэвида Хейни.
TimeZoneInfo кэширует данные после первого вызова, поэтому любые изменения в настройках ПК не повлияют на ваше приложение, если оно уже запущено. Вы должны вызвать метод:
TimeZoneInfo.ClearCachedData();
обновить этот кеш. Так что этот будет работать в вашем случае:
TimeZoneInfo.ClearCachedData();
var offsetTimespan = DateTimeOffset.Now.Offset;
var offsetInHours = offsetTimespan.TotalHours;
Вы делаете свою жизнь сложнее, чем нужно.:)
использование DateTimeOffset
: http://msdn.microsoft.com/en-us/library/system.datetimeoffset.now%28v=vs.110%29.aspx
var now = DateTimeOffset.Now;
Это будет также включать информацию о смещении часового пояса.