Локализованное относительное форматирование даты в Java - PullRequest
0 голосов
/ 26 января 2012

Я хотел бы отображать даты, подобные этой:

[ОТНОСИТЕЛЬНО], КОРОТКИЙ ДЕНЬ ГОДА ЧАСЫ: МИНУТЫ [AM | PM] [TIMEZONE]

для локали.Русский, например ::1007*

Today, Jan 26, 2012 07:41 PM CET

Для локали НЕМЕЦКИЙ, например ::1010*

Heute, 26. Jan 2012 19:41 MEZ

На свидание несколько дней назад просто:

Jan 22, 2012 07:41 PM CET

Таким образом, [RELATIVE] - «префикс» должен появляться только в том случае, если «доступен» (с использованием ICU4J), в противном случае мы бы хотели видеть точную дату; мы хотим автоматически переключаться с представления в 12/24 часа в зависимости от локали

Шаблоны не работают, так как для этой относительной вещи нет идентификатора, а также для чч: мм с автоматическим 12/24 часов на основе локали.

Есть идеи?

1 Ответ

0 голосов
/ 26 января 2012

Посмотрите на

DateFormat.getDateInstance(int style, Locale locale)

Javadoc

С этим вы можете получить строки формата, зависящие от локали.Я не знаю ни одного надлежащего API для предоставления Today / Tomorrow - Heute / Morgen перед вашей датой.Но вы легко можете указать день недели впереди, например, в среду, 01.01.2010, 10:00 вечера.

DateFormat поддерживает оба варианта: 12 с AM / PM или 24 часа в сутки.


Обновите свой комментарий: еще раз проверьте javadoc, DateFormat поддерживает AM / PM или полные часы дня в зависимости от локали.

    System.out.println(DateFormat.getDateTimeInstance(DateFormat.FULL,
            DateFormat.FULL, Locale.ENGLISH).format(
            Calendar.getInstance().getTime()));
    System.out.println(DateFormat.getDateTimeInstance(DateFormat.FULL,
            DateFormat.FULL, Locale.GERMAN).format(
            Calendar.getInstance().getTime()));

генерирует

Thursday, January 26, 2012 9:49:41 PM CET
Donnerstag, 26. Januar 2012 21:49 Uhr MEZ

Оставляет сегодня /завтра выпуск.SimpleDateFormat не предоставляет эту функцию.Если вам это действительно нужно, я напишу помощник, который принимает входные параметры, оборачивает вызов getDateTimeInstance (). Format () и добавляет перед ним Today / Tomorrow, если дата совпадает.

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