First, thanks for re-posting. Second, I’m going to drop a link to Unicode Technical Standard #35 Unicode Locale Data Markup Language (LDML) Part 4: Dates, just for the benefit of Future Quinn™. Third, I apologise in advance for harping on about the old API, but you’ll understand why in a second. You wrote: I could use formatter.setLocalizedDateFormatFromTemplate(isTwentyFourHourClock ? HHmm : hhmm) Unfortunately that doesn’t work, even for ‘simple’ cases like US English. Consider the code at the end of this post. Put that code into a test app and run it on an device. Now configure your device as follows: Set Settings > General > Language & Region > Region to United States. Set Settings > General > Date & Time > 24-Hour Time to On. Now run the code. It prints this: locale: en_US (current) format: X .standard X .preferred X .force12Hour X .force24Hour X AM: X 09:42 X 09:42 X 09:42 X