Цель C - Как получить необработанное смещение (без DST), используя NSTimeZone

Я хотел бы получить сырое смещение от GMT. Я знаю, что ответ может быть таким:

NSTimeZone *zone = [NSTimeZone timeZoneWithName:@"Europe/Berlin"];
NSInteger *offset = [zone secondsFromGMT];

(как здесь: iOS - Как получить сырое смещение для часового пояса?)

Но проблема в том, что это не дает мне необработанное смещение (для Берлина +1), а только смещение с DST (+2), то есть для текущей даты.

1 ответ

Решение

NSTimeZone имеет свойство daylightSavingTimeOffset which returns the difference to the raw offset

NSTimeZone *zone = [NSTimeZone timeZoneWithName:@"Europe/Berlin"];
NSTimeInterval rawOffset = [zone secondsFromGMT] - [zone daylightSavingTimeOffset];
Другие вопросы по тегам