I am building an alarm clock app in Swift 2. I can't seem to find a decent way to find out whether the phone is set to 24 hours time or not.
In addition I can't change the simulator to work with 24 hours so I can't even test some alternatives by playing with the time settings. Any ideas?

1 Answer
1

There is a template specifier for NSDateFormatter that fits this need. This specifier is j and you can get it through the dateFormatFromTemplate:options:locale: method of NSDateFormatter. The formatter returns h a if the locale is set to 12H, else HH if it's set to 24H, so you can easily check if the output string contains a or not. This relies on the locale property of the formatter that you should set to NSLocale.currentLocale() for getting the system's current locale:

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.

for 24 hours format the result should contains HH ... So or so, template "j" is very useful information, at least for me. Are you able to share some reference to that?
– user3441734Jan 23 '16 at 16:41

@user3441734 you're right, for 24 hours format the result is "HH" and for 12 hours is "h a". I've edited the answer and I added references to NSDateFormatter and the associated Unicode standard.
– Nicola GiancecchiJan 23 '16 at 18:15