Search code examples
javatimelocale

How do I find out whether a locale uses 12 or 24 hour time in Java?


In Java, I want to print just the time of day in hours and minutes and want it to correctly switch between, e.g., "13:00" and "1:00 PM" according to the locale. How do I do this?


Solution

  • The locale doesn't explicitly specify whether 12 or 24 hour time formats are preferred. Rather, locale specific date formats are handled by the locale defining the formats directly.

    • If you simply want to use the "locale preferred" time format, just call one of the three DateFormat.getTimeInstance(...) static methods, and use whatever DateFormat it returns.

    • If you have a SimpleDateFormat instance in your hands, you could (if you were prepared to do a significant amount of coding) call toPattern() and parse the resulting pattern to see if it used a 12 or 24 hour dates ... or neither. You could even tweak the pattern to use the "other" form and then call applyPattern(String) to alter the format.