2014-04-16 109 views
0

我想創建自定義時間格式,但我需要知道用戶的系統首選項是否需要24小時制或AM/PM格式。我查看了NSCalendar和NSLocale,但找不到它。從當前日曆/區域設置獲取時間格式(上午/下午或24小時)

*** UPDATE

由於其它問題不明確讓我們知道如何在用戶想要24小時的時間樣式搞定,我從其他2個問題回答這個問題,我發現。但是如果這能起作用還需要確認嗎?

NSString *fmt = [NSDateFormatter dateFormatFromTemplate:@"jm" options:0 locale:[NSLocale currentLocale]]; 


BOOL is24HourStyle = [fmt rangeOfString:@"HH"].location != NSNotFound; 
NSLog(@"%@", fmt); 
NSLog(@"is 24 %@", is24HourStyle ? @"YES" : @"NO"); 
+0

[基於語言環境的設備的日期格式]可能的重複(http://stackoverflow.com/questions/16481287/date-formats-from-device-based-on-locale) - 特別看到這個答案:http ://stackoverflow.com/a/16515219/1187415。 –

+0

這個答案有幫助,但沒有解釋如何確切知道它的24小時時間風格與否。仍然需要一些幫助。 –

回答

1

根據http://www.unicode.org/reports/tr35/tr35-31/tr35-dates.html#Date_Format_Patterns

  • 'J' 爲柔性的日期模式生成的專用符號。它請求區域設置的首選小時格式,並且必須替換爲'h','H','K'或'k'。
  • 'h'和'K'是12小時制格式的符號。
  • 'H'和'k'是24小時制格式的符號。

    NSString *fmt = [NSDateFormatter dateFormatFromTemplate:@"jm" options:0 locale:[NSLocale currentLocale]]; 
    BOOL is24HourStyle = [fmt rangeOfString:@"H"].location != NSNotFound 
            || [fmt rangeOfString:@"k"].location != NSNotFound; 
    

    我無法找到一個語言環境:

所以,檢查是否有24小時的格式,你應該當「H」或「K」從模板生成的格式 出現,請檢查小時格式爲「k」或「K」,但例如在完成 區域設置中,「jm」擴展爲「H.mm」,因此檢查「HH」是不正確的。

相關問題