Формат даты Java для локали - PullRequest
19 голосов
/ 27 августа 2009

Как мне найти DateFormat для данного Locale?

Ответы [ 2 ]

25 голосов
/ 27 августа 2009
DateFormat.getDateInstance(int,Locale)

Например:

import static java.text.DateFormat.*;

DateFormat f = getDateInstance(SHORT, Locale.ENGLISH);

Затем вы можете использовать этот объект для форматирования Date s:

String d = f.format(new Date());

Если вы действительно хотите знать базовый шаблон (например, yyyy-MMM-dd), тогда, как вы получите SimpleDateFormat объект обратно:

SimpleDateFormat sf = (SimpleDateFormat) f;
String p1 = sf.toPattern();
String p2 = sf.toLocalizedPattern();
2 голосов
/ 20 августа 2016

ТЛ; др

DateTimeFormatter.ofLocalizedDateTime( FormatStyle.FULL )
                 .withLocale( Locale.CANADA_FRENCH );

java.time

Оригинальные классы даты и времени теперь унаследованы и заменены классами java.time.

DateTimeFormatter имеет простой способ автоматической локализации с помощью Locale при генерации строки для представления значения даты и времени. Укажите FormatStyle, чтобы указать длину вывода (сокращенно или нет).

DateTimeFormatter f = DateTimeFormatter.ofLocalizedDateTime( FormatStyle.FULL );
f = f.withLocale( Locale.CANADA_FRENCH );

Получить текущий момент. Обратите внимание, что Locale и часовой пояс не имеют ничего общего друг с другом. Один определяет представление, другой настраивается на определенное время настенных часов . Таким образом, у вас может быть часовой пояс в Новой Зеландии с Locale японским языком, или в этом случае часовой пояс в Индии с презентацией, отформатированной для чтения квебекской персоной.

ZoneId z = ZoneId.of( "Asia/Kolkata" );
ZonedDateTime zdt = ZonedDateTime.now( z );

Генерация строки с использованием этого локализующего объекта форматера.

String output = zdt.format( f );

О java.time

Фреймворк java.time встроен в Java 8 и более поздние версии. Эти классы заменяют проблемные старые устаревшие классы даты и времени, такие как java.util.Date, Calendar, & SimpleDateFormat

Проект Joda-Time , теперь в режиме обслуживания , рекомендует перейти на классы java.time .

Чтобы узнать больше, см. Oracle Tutorial . И поиск переполнения стека для многих примеров и объяснений. Спецификация JSR 310 .

Где получить классы java.time?

Проект ThreeTen-Extra расширяет java.time дополнительными классами. Этот проект является полигоном для возможных будущих дополнений к java.time. Здесь вы можете найти некоторые полезные классы, такие как Interval, YearWeek, YearQuarter и more .

...