我想在運行時更新iOS應用程序的時區。我想在用戶從「設置」應用程序「設置 - >常規 - >語言&區域 - >區域」更改區域時更新時區。在運行時更新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區域(systemtimezone)中設置的時區?
當我們更新區域時,它會更新設備的區域設置(AM/PM或24HOUR格式)。我們可以使用[NSLocale autoupdatingCurrentLocale]在應用程序中獲取此更新的區域設置,但是我們需要從導航控制器中彈出視圖控制器,然後再次將其推送到新的區域設置。我想更新這個新的時間格式,而無需從導航控制器中彈出視圖控制器?
你究竟在iOS設置中做了這些改變? –
我想將AM/PM格式更新爲24小時(軍用)格式,反之亦然。 –
但AM/PM與24小時格式不是時區的一部分。 –