Смещение по Гринвичу для даты в Objective-C

Мне нужно только смещение по Гринвичу для даты. Я использую этот метод

double numberOfHours = (double)[timeZone secondsFromGMTForDate:date]/ 3600.0;

Фактически в Берлине, Германия, летнее время будет включено 31 марта 2013 года, а время изменится в 2:00 ночи. Проблема в том, что мне нужно смещение по Гринвичу с использованием только даты. Если date = 31-3-2013 00:00:00, возвращается +1. он возвращает +2 после 31-3-2013 02:00:00. Есть ли какой-либо метод / способ получить смещение часового пояса без использования компонентов времени?


person user2163780    schedule 22.03.2013    source источник
comment
нет необходимости приводить оба типа для удвоения, подойдет любой. и 3600.0 будет удвоен.   -  person Anoop Vaidya    schedule 22.03.2013


Ответы (3)


если вы хотите избежать использования компонентов времени. вы можете использовать эти методы

nextDaylightSavingTimeTransition и daylightSavingTimeOffsetForDate:NSDate

класса NSTimeZone.

person Sadia    schedule 24.03.2013

Как насчет того, чтобы просто изменить время на свидании на середину дня и вместо этого проверить это?

Но нет, без каких-либо компонентов времени дата по умолчанию будет на полночь, и вы получите результат (правильный для этого времени) +1.

person borrrden    schedule 22.03.2013
comment
31 марта время меняется (с +1 до +2). Мне нужно +2 на 31 марта без учета временных составляющих. - person user2163780; 22.03.2013
comment
Почему вы думаете, что это возможно? Это неправда. Для полуночи этого дня это +1. Почему нельзя просто сложить временные составляющие перед расчетом? - person borrrden; 22.03.2013

Вероятно, вы можете использовать NSDateFormatter с настраиваемым форматом даты, например @"zzz", который вернет смещение часового пояса для данного NSDate.

person Adis    schedule 22.03.2013