Позолоченным решением вашей проблемы будет предоставление ваших собственных данных локали для en-IN
локали.С одной стороны, это может быть слишком много, и вы можете искать следующие лучшие решения;с другой стороны, это выполнимо, если важно.Я не видел предоставленных данных в формате даты, поэтому не буду притворяться, что могу сообщить вам подробности.Пожалуйста, изучите документацию LocaleServiceProvider
и ее подкласса DateFormatProvider
(ссылки внизу).
Получение строки шаблона локализованного формата для локали
Locale loc = Locale.forLanguageTag("en-IN");
System.out.println(DateTimeFormatterBuilder.getLocalizedDateTimePattern(
FormatStyle.SHORT, null, IsoChronology.INSTANCE, loc));
Вывод на мой Java9:
дд / мм / гг
Обратите внимание, что я использую FormatStyle.SHORT
, а не MEDIUM
.В любом случае, я считаю, что это первая часть решения вашей проблемы.
Возможные следующие лучшие решения
Вывод выше не так уж прост, просто используя косые черты там, где вы хотели тире/ дефис.Вы можете подумать, могут ли ваши пользователи жить с этим.Результат в других версиях Java может отличаться.
Запуск вашей программы Java с системным свойством java.locale.providers
, начинающимся с HOST
, заставит Java использовать формат даты операционной системы для языка по умолчаниютолько .Во-первых, вы можете проверить, дает ли это то, что вы хотите.Во-вторых, и, что еще важнее, это позволяет пользователю выбирать собственный формат даты, настраивая свою операционную систему.Например,
java -Djava.locale.providers=HOST,CLDR,COMPAT YourApp
Подробнее в документации LocaleServiceProvider
.
На той же Java 9, что и раньше, вывод, который я получаю для te-IN
(телуга), это dd-MM-yy
, который вы просили.Во многих ситуациях пользователь выбирает локаль, находящуюся вне контроля, но также могут быть ситуации, когда выбор этой локали решит вашу проблему.
Наконец, если вам нужно поддерживать свое приложение в нескольких локалях, а вы - иличто важно, ваши пользователи - не удовлетворены только форматом даты для en-IN
локали, вы, конечно, можете вручную кодировать исключение только для этой локали и жестко кодировать dd-MM-yy
всякий раз, когда вы получаете эту локаль.Это не красивое решение, но будет работать.
Ссылки