В чем смысл локали в DateTimeFormatter?JAVA

Программисты JAVA общаются здесь
Anonymous
В чем смысл локали в DateTimeFormatter?

Сообщение Anonymous »

Учитывая следующий код

Код: Выделить всё

LocalDate localDateEpoch = LocalDate.parse(
"01-Jan-2017", DateTimeFormatter.ofPattern("d-MMM-yyyy", Locale.FRENCH));

System.out.println("localDateEpoch: " + localDateEpoch);
Причина, по которой я выбрал французский, заключается в том, что французские цифры латинские, поэтому теоретически они должны просто интерпретировать это (то же самое с буквами в «Jan»). Тем не менее я получил эту ошибку

Код: Выделить всё

Exception in thread "main" java.time.format.DateTimeParseException:
Text '01-Jan-2017' could not be parsed at index 3
Мои вопросы
  • Первое: (связано с региональными настройками) Что случилось с отсутствием страны/языки? Они очень ограничены
  • 2-е: (связано с языковыми стандартами) Почему существуют локали для языков/стран (например, французского и Франции) ?
  • 3-й: Что это вообще дает?
Теперь я провел небольшое исследование со своей стороны.
Кажется, чтобы решить упомянутые выше проблемы с отсутствием языков, вы можете просто использовать Locale.forLanguageTag("fa"); но опять же, почему не имеет Locale.Iran/Persian. Видел сообщение, в котором упоминалось о том, как в этом случае преобразовать числовые значения в персидский язык, поэтому я попытался сделать наоборот.

Код: Выделить всё

    LocalDate localDateEpoch = LocalDate.parse(
"۰۱-Jan-۲۰۱۷", DateTimeFormatter.ofPattern("d-MMM-yyyy", Locale.forLanguageTag("fa")));
И снова ошибка.

Код: Выделить всё

Exception in thread "main" java.time.format.DateTimeParseException:
Text '۰۱-Jan-۲۰۱۷' could not be parsed at index 0
И если вам интересно, я попробовал без MMM и все равно получил ту же ошибку.

Подробнее здесь: https://stackoverflow.com/questions/786 ... eformatter

Вернуться в «JAVA»