swift – NSDateFormatter在OS X和iOS中检测24小时制

swift – NSDateFormatter在OS X和iOS中检测24小时制,第1张

概述我想检查用户是否在OS X和iOS中选择了12小时或24小时时钟作为他们的偏好.所以我想检测用户是否已完成以下 *** 作: >在Mac上,系统偏好设置为日期和时间.时间,使用24小时制 >在iPhone上,首选项位于“设置”,“常规”,“日期和时间”中.时间,24小时制 我目前有以下代码,但它总是返回12小时时钟所代表的时间,即使用户设置的系统首选项是24小时制. let timeFormatter = 我想检查用户是否在OS X和iOS中选择了12小时或24小时时钟作为他们的偏好.所以我想检测用户是否已完成以下 *** 作:

>在Mac上,系统偏好设置为日期和时间.时间,使用24小时制
>在iPhone上,首选项位于“设置”,“常规”,“日期和时间”中.时间,24小时制

我目前有以下代码,但它总是返回12小时时钟所代表的时间,即使用户设置的系统首选项是24小时制.

let timeFormatter = NSDateFormatter()timeFormatter.locale = NSLocale.currentLocale()timeFormatter.dateStyle = NSDateFormatterStyle.NoStyletimeFormatter.timeStyle = NSDateFormatterStyle.ShortStylelet ampmtext = timeFormatter.stringFromDate(NSDate())println(ampmtext)if ampmtext.rangeOfString("M") != nil {    println("12-hour clock")} else {    println("24-hour clock")}

我想找到一个用Objective-C和Swift编写的解决方案,用于Mac和iPhone,它可以检测设备时钟是显示24小时还是12小时.

日期模板功能有一个巧妙的技巧.模板说明符j将变为小时格式,具体取决于语言环境是使用12或24小时格式.它会变成像h一样12小时(在这种情况下为en_US)或HH为24小时格式(en_GB).

然后你只需要检查日期格式是否包含

//let locale = NSLocale(localeIDentifIEr: "de_DE")//let locale = NSLocale(localeIDentifIEr: "en_US")//let locale = NSLocale(localeIDentifIEr: "en_GB")let locale = NSLocale.currentLocale()let dateFormat = NSDateFormatter.dateFormatFromTemplate("j",options: 0,locale: locale)!if dateFormat.rangeOfString("a") != nil {    println("12 hour")}else {    println("24 hour")}

这也应该考虑格式覆盖.

这类似于您的支票,但您不应该尝试检查上午或下午.这些是英文版本,还有更多.例如在德国,如果你强制使用12小时格式iOS使用nachm.和vorm ..正确的方法是检查a的格式.

总结

以上是内存溢出为你收集整理的swift – NSDateFormatter在OS X和iOS中检测24小时制全部内容,希望文章能够帮你解决swift – NSDateFormatter在OS X和iOS中检测24小时制所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1037258.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-24
下一篇 2022-05-24

发表评论

登录后才能评论

评论列表(0条)

保存