Как мне узнать, использует ли локаль 12 или 24 часа времени на Java? - PullRequest
7 голосов
/ 28 июля 2010

В Java я хочу напечатать только время суток в часах и минутах и ​​хочу, чтобы оно правильно переключалось между, например, «13:00» и «13:00 PM» в зависимости от локали.Как мне это сделать?

Ответы [ 3 ]

5 голосов
/ 28 июля 2010

Локаль не указывает явно, предпочтительны ли форматы времени 12 или 24 часа. Скорее, специфичные для локали форматы даты обрабатываются локалью, определяющей форматы напрямую.

  • Если вы просто хотите использовать предпочтительный языковой формат времени, просто вызовите один из трех DateFormat.getTimeInstance(...) статических методов и используйте любой DateFormat, который он возвращает.

  • Если у вас есть экземпляр SimpleDateFormat в ваших руках, вы можете (если вы были готовы к значительному кодированию) позвонить toPattern() и проанализировать полученный шаблон, чтобы увидеть если он использовал даты 12 или 24 часа ... или ни того, ни другого. Вы можете даже настроить шаблон, чтобы использовать «другую» форму, а затем вызвать applyPattern(String), чтобы изменить формат.

4 голосов
/ 28 июля 2010

Используйте класс java.text.DateFormat для создания правильного вывода заданного времени.

Как из API:

Чтобы отформатироватьdate для текущей локали, используйте один из статических фабричных методов:

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

Вы просто используете метод getTimeInstance() и вызываете метод format() для возвращенного объекта DateFormat

1 голос
/ 06 января 2013

Я написал небольшую функцию, которая определяет, использует ли текущая локаль 24 или 12 часов:

public static boolean is24HourLocale() {
    String output = SimpleDateFormat.getTimeInstance(DateFormat.SHORT).format(new Date());
    if (output.contains(" AM") || output.contains(" PM")) {
        return false;
    } else {
        return true;
    }
}
...