В моем приложении мне нужно отображать даты в зависимости от языка. Поэтому «четверг, 10 мая 2018 года» должен отображаться как «en_US», но должен отображаться как «четверг, 10 мая 2018 года» в en_GB (английский, Великобритания).
В большинстве случаев я могу использовать следующий стиль кода с классами API java.time:
public String toString(ZonedDateTime input) {
DateTimeFormatter dateTimeFormatter = getDateTimeFormatter(FormatStyle.MEDIUM, FormatStyle.SHORT);
return input.format(dateTimeFormatter);
}
private DateTimeFormatter getDateTimeFormatter(FormatStyle dateStyle, FormatStyle timeStyle) {
String pattern = DateTimeFormatterBuilder.getLocalizedDateTimePattern(
dateStyle, timeStyle, IsoChronology.INSTANCE, Locale.getDefault());
return DateTimeFormatter.ofPattern(pattern);
}
В таких случаях я не указываю явный шаблон даты, а вместо этого указываю символический FormatStyle.
Я не уверен, что лучше всего справляться со случаем, когда нет стандартного FormatStyle, отвечающего моим потребностям.
Конкретный пример: мне нужно показать день недели, месяц и дату, но не год.
Таким образом, «четверг, 10 мая 2018 года» должен отображаться как «четверг, 10 мая» в en_US, но должен отображаться как «четверг, 10 мая» в en_GB (английский, Великобритания).
Любые предложения о том, как справиться с этим требованием?