Есть ли DateFormatProvider, который будет использовать информацию о локализации Windows? - PullRequest
1 голос
/ 21 октября 2010

Я пишу приложение на Java, которое должно отображать даты.

Поскольку это приложение в основном будет работать в системах Windows, я хотел бы иметь возможность использовать форматы даты и времени, которые соответствуют настройкам локализации Windows.

Я нашел класс DateFormatProvider в Java 6, который вселил в меня большие надежды ... но я не нашел реализации, которая будет использовать информацию о локализации Windows.

Есть предложения?

Ответы [ 2 ]

0 голосов
/ 21 октября 2010

Я не слышал ни о каком устройстве форматирования даты Java, которое использует процедуры форматирования MS Windows (или просто определения в этом отношении).Так как Java предназначен для мультиплатформенности (компиляции один раз, запускается где угодно), он просто не может использовать базовое поведение ОС для обеспечения согласованности.

Вы можете использовать класс DateFormat, как определено здесь

DateFormat dateFormatter = DateFormat.getDateInstance(DateFormat.MEDIUM, Locale.getDefault());
String formattedDate = dateFormatter(new Date());

Одна важная проблема, связанная с этим классом: длинные форматы дат разбиты на чешский, польский и русский, возможно, и на другие славянские языки.Вместо этого я рекомендую использовать СРЕДНИЙ формат даты.

Кстати.Это отформатирует даты для григорианских или юлианских календарей.Он не выдаст вам ни арабские, ни ивритские календари (хотя в некоторых странах по умолчанию используется старый).


Редактировать

Я не знаю ваших конкретных требований, но так как вы упомянули Locale, возможно, класс ICU4J DateFormat - это то, что вы ищете.Тем не менее, насколько мне известно (что может быть неполным здесь), они используют свой собственный форматер и локализованную текстовую базу данных.Однако эта база данных, вероятно, более полная (особенно на Mac), чем база данных, поставляемая в комплекте с JDK (предыдущий снимок ICU).

0 голосов
/ 21 октября 2010

Вы должны иметь возможность использовать методы DateFormatProvider с языком по умолчанию, возвращаемым getDefault () .

Виртуальная машина Java устанавливает локаль по умолчанию при запуске на основе среда хоста.

РЕДАКТИРОВАТЬ: если вы не можете просто передать язык по умолчанию классу DateFormat, здесь есть пример кода здесь для реализации конкретного класса, который расширяет DateFormatProvider.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...