java -Djava.locale.providers=HOST,CLDR,COMPAT YourProgram
Форматы даты и времени являются частью данных локали Java. Java может получать данные о локали из четырех источников. Какие из них используются, определяется системным свойством java.locale.providers
. По умолчанию до Java 8 было JRE,SPI
. С Java 9 это CLDR,COMPAT
. Ни один из них не даст вам данные о дате и времени из операционной системы, но вы можете получить их, указав поставщика HOST
locale, например, как в командной строке выше. При запуске вашей программы с этим определением свойства, например, вы можете иметь:
DateTimeFormatter systemFormatter
= DateTimeFormatter.ofLocalizedDateTime(FormatStyle.FULL);
ZonedDateTime now = ZonedDateTime.now(ZoneId.of("Africa/Bangui"));
String formattedDateTime = now.format(systemFormatter);
System.out.println(formattedDateTime);
Будет напечатана текущая дата и время в формате, определенном базовой операционной системой. Если операционная система поддерживает это, вы можете изменять длину вывода, используя стили форматов FULL
, LONG
, MEDIUM
и SHORT
.
В большинстве случаев вам нужно, чтобы DateTimeFormatter
знал формат, как в приведенном выше коде. В редком случае, когда вы хотите узнать строку шаблона формата, это также возможно:
String osFormat = DateTimeFormatterBuilder.getLocalizedDateTimePattern(
FormatStyle.SHORT, FormatStyle.LONG, IsoChronology.INSTANCE, Locale.getDefault());
Первый аргумент getLocalizedDateTimePattern
- это стиль формата date . Второй стиль - время .