Ios 如何检查电话时间格式是否设置为24小时?

Ios 如何检查电话时间格式是否设置为24小时?,ios,swift,Ios,Swift,我正在Swift 2中构建一个闹钟应用程序。我似乎找不到一个合适的方法来确定手机是否设置为24小时。 此外,我无法将模拟器更改为24小时工作,因此我甚至无法通过玩时间设置来测试一些替代方案。有什么想法吗? 有一个适用于NSDateFormatter的模板说明符可以满足这一需要。此说明符是j,您可以通过NSDateFormatter的dateFormatFromTemplate:options:locale:方法获得它。如果区域设置为12H,格式化程序将返回hA,如果设置为24H,则返回HH,因此

我正在Swift 2中构建一个闹钟应用程序。我似乎找不到一个合适的方法来确定手机是否设置为24小时。 此外,我无法将模拟器更改为24小时工作,因此我甚至无法通过玩时间设置来测试一些替代方案。有什么想法吗?

  • 有一个适用于
    NSDateFormatter
    的模板说明符可以满足这一需要。此说明符是
    j
    ,您可以通过
    NSDateFormatter
    dateFormatFromTemplate:options:locale:
    方法获得它。如果区域设置为12H,格式化程序将返回
    hA
    ,如果设置为24H,则返回
    HH
    ,因此您可以轻松检查输出字符串是否包含
    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
    }
参考资料:-

  • 在模拟器中,设置中没有12/24小时切换,就像在真实设备上一样。 改变这一点的技巧是编辑模拟器的日期样式,而不影响当前选择的区域或日历。您可以在设置>常规>语言和区域>高级中找到此选项

对于24小时格式,结果应包含HH。。。大约,模板“j”是非常有用的信息,至少对我来说是这样。你能分享一些关于这个的参考吗?@user3441734你是对的,24小时格式的结果是“HH”,12小时的结果是“ha”。我已经编辑了答案,并添加了对NSDateFormatter和相关Unicode标准的引用。感谢您的引用!工作得很有魅力!非常感谢!!