Я хочу обновить часовой пояс моего приложения iOS во время его работы. Я хочу обновить часовой пояс, когда пользователь меняет регион из приложения «Настройки» «Настройки-> Общие-> Язык и регион-> Регион».
Я получаю уведомление об изменении региона, используя NSCurrentLocaleDidChangeNotification, и вызывается метод селектора «updateTimeZone».
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(updateTimeZone) name:NSCurrentLocaleDidChangeNotification object:nil];
- (void)updateTimeZone
{
NSLog(@"Zone1: %@", [NSTimeZone systemTimeZone]);
NSLog(@"Zone2: %@", [NSTimeZone localTimeZone]);
NSLog(@"Zone3: %@", [NSTimeZone defaultTimeZone]);
[NSTimeZone resetSystemTimeZone];
NSLog(@"Zone11: %@", [NSTimeZone systemTimeZone]);
NSLog(@"Zone22: %@", [NSTimeZone localTimeZone]);
NSLog(@"Zone33: %@", [NSTimeZone defaultTimeZone]);
}
Вывод
2015-01-07 16:23:02.992 A[1677:105206] Zone1: Asia/Kolkata (GMT+5:30) offset 19800
2015-01-07 16:23:02.993 A[1677:105206] Zone2: Local Time Zone (Asia/Kolkata (GMT+5:30) offset 19800)
2015-01-07 16:23:02.994 A[1677:105206] Zone3: Asia/Kolkata (GMT+5:30) offset 19800
2015-01-07 16:23:02.999 A[1677:105206] Zone11: Asia/Kolkata (GMT+5:30) offset 19800
2015-01-07 16:23:02.999 A[1677:105206] Zone22: Local Time Zone (Asia/Kolkata (GMT+5:30) offset 19800)
2015-01-07 16:23:03.001 A[1677:105206] Zone33: Asia/Kolkata (GMT+5:30) offset 19800
Я пытался изменить многие регионы в настройках, но мое приложение всегда показывает мой текущий часовой пояс. Я уже использую [NSTimeZone resetSystemTimeZone]; чтобы удалить кешированный часовой пояс, но всегда получать мой текущий часовой пояс. Как я могу получить часовой пояс, установленный в регионе iOS (системный часовой пояс)?
Когда мы обновляем регион, он обновляет локаль (формат AM/PM или 24HOUR) для устройства. Мы можем получить эту обновленную локаль в приложении, используя [NSLocale autoupdatingCurrentLocale], но нам нужно вытолкнуть контроллер представления из контроллера навигации и снова нажать его для новой локали. Я хочу обновить этот новый формат времени, не выскакивая из контроллера представления из контроллера навигации?