13
我正在Swift 2中構建一個鬧鐘應用程序。我似乎找不到一個體面的方法來確定手機是否設置爲24小時制。 此外,我無法將模擬器更改爲24小時工作,所以我甚至無法通過玩時間設置來測試某些替代方案。有任何想法嗎?我是否要檢查手機時間格式是否設置爲24小時?
我正在Swift 2中構建一個鬧鐘應用程序。我似乎找不到一個體面的方法來確定手機是否設置爲24小時制。 此外,我無法將模擬器更改爲24小時工作,所以我甚至無法通過玩時間設置來測試某些替代方案。有任何想法嗎?我是否要檢查手機時間格式是否設置爲24小時?
NSDateFormatter
有一個模板說明符符合這個需要。該說明符是j
,您可以通過NSDateFormatter
的dateFormatFromTemplate:options:locale:
方法獲取。如果語言環境設置爲12H,格式化程序返回h a
,否則HH
如果設置爲24H,則可以輕鬆檢查輸出字符串是否包含a
。這依賴於格式化的locale
財產,你應該設置爲NSLocale.currentLocale()
用於獲取系統的當前區域:斯威夫特3
let locale = NSLocale.current
let formatter : String = DateFormatter.dateFormat(fromTemplate: "j", options:0, locale:locale)!
if formatter.contains("a") {
//phone is set to 12 hours
} else {
//phone is set to 24 hours
}
斯威夫特2
let locale = NSLocale.currentLocale()
let formatter : String = NSDateFormatter.dateFormatFromTemplate("j", options:0, locale:locale)!
if formatter.containsString("a") {
//phone is set to 12 hours
} else {
//phone is set to 24 hours
}
參考:NSDateFormatter Class Reference - Unicode ts35-23 Date Field Symbol Table
24小時格式結果應該包含HH ...所以左右,模板「j」是非常有用的信息,至少對我而言。你能分享一些參考嗎? – user3441734
@ user3441734你是對的,24小時格式的結果是「HH」,12小時是「h a」。我編輯了答案,並添加了對NSDateFormatter和相關Unicode標準的引用。 –
感謝您的參考! – user3441734