Я хочу отформатировать дату, которая должна быть локализована и включает «дневной период».
«Дневной период» означает не am / pm, а «полдень», «раннее утро» и т. Д.
Форматированная дата, основанная на немецкой локали с включенной настройкой 12 часов, должна выглядеть как 03.08.18, 9:01 abends
, «abends» означает вечер.
Тот же самый пример должен быть 3/8/18 9:01 de la noche
на испанском языке. Почему я думаю, что это возможно :
A: Потому что даты в приложении Android для WhatsApp форматируются следующим образом
B: Поскольку исходный код Java 10 включает в себя следующее (изфайл немецкого перевода):
<dayPeriods>
<dayPeriodContext type="format">
<dayPeriodWidth type="wide">
<dayPeriod type="afternoon">nachmittags</dayPeriod>
<dayPeriod type="am">vorm.</dayPeriod>
<dayPeriod type="earlyMorning">morgens</dayPeriod>
<dayPeriod type="evening">abends</dayPeriod>
<dayPeriod type="morning">vormittags</dayPeriod>
<dayPeriod type="night">nachts</dayPeriod>
<dayPeriod type="noon">Mittag</dayPeriod>
<dayPeriod type="pm">nachm.</dayPeriod>
</dayPeriodWidth>
</dayPeriodContext>
...
</dayPeriods>
Я пытался : (текущая локаль)
DateFormat df = DateFormat.getDateTimeInstance(DateFormat.SHORT, DateFormat.SHORT, current);
String formattedDate = df.format(System.currentTimeMillis());
Вывод: 08.12.18 7:24 nachm
или 8/12/18 7:54 p. m.
Следующий код имеет такой же вывод:
DateFormat abc = SimpleDateFormat.getDateTimeInstance(DateFormat.SHORT, DateFormat.SHORT, current);
abc.format(System.currentTimeMillis());
Я также попробовал DateTimeFormatterBuilder
(со всеми версиями AMPM_OF_DAY):
DateTimeFormatter test = DateTimeFormatter.ofLocalizedDateTime(FormatStyle.MEDIUM, FormatStyle.SHORT);
DateTimeFormatter fmt = new DateTimeFormatterBuilder()
.append(test)
.appendText(ChronoField.AMPM_OF_DAY, TextStyle.SHORT)
.appendText(ChronoField.AMPM_OF_DAY, TextStyle.NARROW)
.appendText(ChronoField.AMPM_OF_DAY, TextStyle.FULL)
.appendText(ChronoField.AMPM_OF_DAY, TextStyle.FULL_STANDALONE)
.toFormatter(current);
ZonedDateTime date = ZonedDateTime.now();
date.format(fmt);
Вывод: 8 dic. 2018 19:54p. m.p. m.p. m.11
Есть ли способ вывести дату таким образом?
Спасибо