tags:

views:

41

answers:

2

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?

+4  A: 

Use the java.text.DateFormat class to create the correct output of the given time.

As from the API:

To format a date for the current Locale, use one of the static factory methods:

myString = DateFormat.getDateInstance().format(myDate);

You just use the getTimeInstance() method and call the format() method on the returned DateFormat object

Progman
+1  A: 

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.

Stephen C
Thank you very much! Since I really just want to print it `DateFormat.getTimeInstance(DateFormat.SHORT, someLocale)` did the trick for me. I certainly don't look forward to a situation where I need to actually know what time format is used :p.
kolizz