Люди! как получить время с учетом TimeZone??
От: sorokano  
Дата: 29.08.07 12:31
Оценка:
Есть время, допустим, 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 не подходит
Re: Люди! как получить время с учетом TimeZone??
От: Lelia  
Дата: 29.08.07 12:38
Оценка: 79 (2)
Посмотри вот на это
здесь

Может это подойдет?
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.