How do I check whether a phone time format is set to 24 hours? [duplicate]
- There is a template specifier for
NSDateFormatter
that fits this need. This specifier isj
and you can get it through thedateFormatFromTemplate:options:locale:
method ofNSDateFormatter
. The formatter returnsh a
if the locale is set to 12H, elseHH
if it's set to 24H, so you can easily check if the output string containsa
or not. This relies on thelocale
property of the formatter that you should set toNSLocale.currentLocale()
for getting the system's current locale:
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 }
Reference: NSDateFormatter Class Reference - Unicode ts35-23 Date Field Symbol Table
- In the simulator, you don't have the 12/24 hours toggle in the settings like it happens on the real devices.A trick for changing this is by editing the date style of the Simulator, without affecting the currently selected region or calendar. You can find this option in Settings > General > Language and Region > Advanced.