我正在 Swift 2 中构建一个闹钟应用程序。我似乎找不到一个合适的方法来确定手机是否设置为 24 小时时间。
此外,我无法将模拟器更改为 24 小时工作,因此我什至无法通过调整时间设置来测试一些替代方案。有任何想法吗?
- 有一个模板说明符
NSDateFormatter
适合这个需求。这个说明符是j
你可以通过dateFormatFromTemplate:options:locale:
的方法NSDateFormatter
。格式化程序返回h a
如果区域设置设置为 12H,否则HH
如果设置为 24H,那么您可以轻松检查输出字符串是否包含a
或不。这依赖于locale
您应该设置的格式化程序的属性NSLocale.currentLocale()
用于获取系统当前的区域设置:
Swift 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
}
Swift 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 类参考 https://developer.apple.com/library/ios/documentation/Cocoa/Reference/Foundation/Classes/NSDateFormatter_Class/#//apple_ref/occ/clm/NSDateFormatter/dateFormatFromTemplate:options:locale: - Unicode ts35-23 日期字段符号表 http://www.unicode.org/reports/tr35/tr35-31/tr35-dates.html#Date_Field_Symbol_Table
- 在模拟器中,您无法像在真实设备上那样在设置中进行 12/24 小时切换。
更改此设置的一个技巧是编辑模拟器的日期样式,而不影响当前选定的区域或日历。您可以在“设置”>“常规”>“语言和区域”>“高级”中找到此选项。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)