Вы используете хлопотно старые классы даты и времени, теперь наследство, вытесняли классами java.time.
Антигуа и Барбуда
«Антигуа и Барбуда - ISO3166 код - AG» является не поддерживается локаль в Java 8. См list of supported locales или позвоните по телефону:
System.out.println ("locales: " + Arrays.toString (Locale.getAvailableLocales()));
Вы можете создать свой собственный список явных шаблонов форматирования для таких неподдерживаемых локалей. Например, DateTimeFormatter.ofPattern("dd/MM/yy")
.
Еще не определено, определите Map
каждого неопределенного языкового стандарта, используя строку языка страны, такую как «en-AG», с аналогичным определенным Locale
, который использует те же подходящие форматы.
Или определите Enum
для каждой неопределенной локали методами, которые возвращают DateTimeFormatter
объектов для каждой длины (ПОЛНЫЙ, КОРОТКИЙ и т. Д.).
Или рассмотрите Answer by Comelissen, хотя я еще не изучил это достаточно хорошо, чтобы порекомендовать его еще.
Доминиканская Республика
«Доминиканская Республика - ISO3166 код - DO» это поддерживается в Java 8.
Locale locale = new Locale ("es" , "DO"); // Spanish in Dominican Republic.
LocalDate localDate = LocalDate.now (ZoneId.of ("Europe/Paris"));
DateTimeFormatter f = DateTimeFormatter.ofLocalizedDate (FormatStyle.SHORT).withLocale (locale);
String output = localDate.format (f);
System.out.println ("localDate: " + localDate + " is " + output);
LocalDate: 2017-02-16 составляет 16/02/17
Результат такой, как вы пожелали, dd/MM/yy.
О java.time
java.time каркас встроен в Java 8 и более поздних версий. Эти классы вытесняют неприятные старые legacy классы времени, такие как java.util.Date
, Calendar
, & SimpleDateFormat
.
Проект Joda-Time, в настоящее время в maintenance mode, советует перейти на классы java.time.
Чтобы узнать больше, см. Oracle Tutorial. И поиск Stack Overflow для многих примеров и объяснений. Спецификация: JSR 310.
Где получить классы java.time?
- Java SE 8 и SE 9, а затем
- Встроенный.
- Часть стандартного Java API с объединенной реализацией.
- Java 9 добавляет некоторые незначительные функции и исправления.
- Java SE 6 и SE 7
- Большая часть функциональности java.time будет обратно портирован на Java 6 & 7 в ThreeTen-Backport.
- Android
Проект ThreeTen-Extra расширяет java.time с дополнительными классами. Этот проект является доказательством возможных будущих дополнений к java.time. Здесь вы можете найти полезные классы, такие как Interval
, YearWeek
, YearQuarter
и more.
Возможно, вам придется создать свой собственный «DateFormat» с правильной компоновкой. –
Тогда это похоже на жесткое кодирование. Я ищу вариант для обеспечения подхода на основе XML, который может передавать шаблон даты/валюты/номера для разных стран. –