org.threeten.bp.format
Забудьте о DateFormat
& Date
. Эти ужасные классы были полностью заменены много лет назад принятием JSR 310 .
См. Пакет org.threeten.bp.format
.
DateTimeFormatter
В частности, посмотрите на класс DateTimeFormatter
и его методы ofLocalized…
.
Для получения дополнительной информации ищите эквивалентные классы из java.time . Форматирование уже было рассмотрено много-много раз. API и функциональность будут практически идентичны, поэтому будут применяться существующие посты.
ZoneId z = ZoneId.of( "America/Montreal" ) ;
ZonedDateTime zdt = ZonedDateTime.now( z ) ;
Locale l = Locale.CANADA_FRENCH ;
DateTimeFormatter f = DateTimeFormatter.ofLocalizedDate( FormatStyle.MEDIUM ).withLocale( l ) ;
String output = zdt.format( f ) ;
11 мая 2019
Использование значений по умолчанию
Если вы хотите использовать текущие значения по умолчанию JVM для часового пояса или для локали , я предлагаю вам сделать это явно. Таким образом, любой, кто читает ваш код, знает, что вы рассмотрели проблемы зоны / локали и сознательно решил использовать значение по умолчанию.
ZoneId z = ZoneId.systemDefault() ;
ZonedDateTime zdt = ZonedDateTime.now( z ) ;
Locale l = Locale.getDefault() ;
DateTimeFormatter f = DateTimeFormatter.ofLocalizedDate( FormatStyle.MEDIUM ).withLocale( l ) ;
String output = zdt.format( f ) ;