Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

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

Tags:

java

time

locale

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?

like image 985
stefanlindbohm Avatar asked Jul 28 '10 09:07

stefanlindbohm


People also ask

What is locale date in Java?

The locale is used for specifying the region and language for making the code more locale to the user. The way of writing date is different in different regions of the world. For example, 31st Dec 2017 will be written in India as 31-12-2017 but the same thing will be written in US as 12-31-2017.


2 Answers

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.

like image 160
Stephen C Avatar answered Oct 21 '22 07:10

Stephen C


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

like image 36
Progman Avatar answered Oct 21 '22 07:10

Progman