Я работаю над временем, которое отображает время разных часовых поясов. Для этого я использую стандартное время haDate
(UTC tz).secondsFromGMT возвращает разные значения на устройстве и симуляторе
displayDate
Я использую системный часовой пояс api. Часовой пояс: America/Santiago
(UTC-3: 00).
NSTimeZone *tz=[NSTimeZone timeZoneWithName:_timeZone];
_displayDate=[_haDate dateByAddingTimeInterval:tz.secondsFromGMT];
код "haDate" -
NSDateFormatter *formatter=[[NSDateFormatter alloc]init];
formatter.timeZone=[NSTimeZone timeZoneWithName:@"UTC"];
NSString *utcTimeCurrent=[dict objectForKey:@"utctime"];
[formatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"];
_haDate=[formatter dateFromString:utcTimeCurrent];
Вопрос в том, когда я запускаю этот код на тренажере tz.secondsFromGMT
возвращает -10800
но на устройстве он возвращает -14400
, что 1 час меньше.
Прибор и симулятор, использующий то же самое времяZone Asia/Kolkata
(UTC + 5: 30). Я знаю, что America/Santiago
использует DST, но почему он дает мне разные секунды, даже оба (имитатор и устройство) находятся в одно и то же время.
Что не так и как я могу это исправить?
ПРИМЕЧАНИЕ
Чтобы устранить проблему летнего времени я использую этот код. Но он всегда идет на другую часть на обоих устройствах. (BTW ниже код не требуется, поскольку tz.secondsFromGMT
всегда возвращаются секунды после корректировки перехода на летнее время.)
NSTimeZone *tz=[NSTimeZone timeZoneWithName:_timeZone];
if (tz.isDaylightSavingTime)
{
_displayDate=[_haDate dateByAddingTimeInterval:tz.secondsFromGMT+tz.daylightSavingTimeOffset];
}
else
{
_displayDate=[_haDate dateByAddingTimeInterval:tz.secondsFromGMT];
}
Когда я войти в TZ -
На симуляторе
tz America/Santiago (GMT-3) offset -10800
На устройстве
tz America/Santiago (GMT-4) offset -14400
Так что он не использует DST.
Примечание 2
Эта проблема возникает только в IPad 2. Другие устройства работают отлично.
Примечание 3
Мой IPad 2 с использованием IOS 8.4. Оба часовых пояса (Чили Стандартное время - America/Santiago
и Исландское стандартное время Пасхи - Pacific/Easter
) дают мне неправильные секунды
Вы можете проверить, является ли то же самое для всех вас установок значение _timeZone? –
@JoeSmith да, есть. –
Какова ценность _timeZone? От куда это? –