Есть время, допустим, DateTime originalTime = new DateTime(2007, 10, 10); // будет 10/10/2007 00:00:00
Из конфига читаю инфу о той зоне, в которую я должен привести дату:
HostTimeZone = "3:00 GMT Nairobi daylight +1"
парсю и получаю, соответственно, 3 часа шифт, зона EST, если сейчас летнее время, надо прибавить +1.
Проблема: как мне сделать так, чтобы результат содержал правильное значение с учетом таймзоны Найроби, а не другой зоны где тоже +3(напр Тбилиси), тк в Тбилиси может оказаться, что при переходе на летнее время добавл не +1, а, напр, +2.
этот код работает некорректно, тк берет за таймзону зону с текущей машины и от нее считает дельту, используя год.
DateTime needToConvert = new DateTime(2006, 3, 5);
TimeSpan hostTimeZoneOffset = Config.HostTimeZone;
TimeZone hostZone = TimeZone.CurrentTimeZone; // — берется текущая таймхона вместо нужной.
if (hostZone.IsDaylightSavingTime(DateTime.Now)) { //дата берется сегодняшняя — не факт что в той таймзоне уже перешли на летнее время!
hostTimeZoneOffset = hostTimeZoneOffset + hostZone.GetDaylightChanges(DateTime.Now.Year).Delta; //получаем delta для зоны тек. машины-неправильно!
}
DateTime displayValue = needToConvert.Add(hostTimeZoneOffset);
Вопрос: как на основании имеющихся данных (имя зоны, разница во времени, возможно еще дельту) получить правильное время для ТОЙ, нужной зоны?? как избежать использования данных о таймзоне местной машины? TimeZone.CurrentTimeZone не подходит
Посмотри вот на это
здесь
Может это подойдет?
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>