Йодатиме: как напечатать 4-значный год?

Я использую Jodatime для форматирования даты, и с ее помощью я использую локаль для форматирования ее для конкретной локали. Я хочу, чтобы моя дата была отформатирована как "17/06/2013" (разделители должны зависеть от локали), чего я почти достигну

DateTimeFormat.forStyle("S-").withLocale(myLocale)

который дает "17/06/13" (год с двумя цифрами). Стиль "М-" дает "17 июля 2013 года" (французская локаль), что тоже не то, что я хочу.

Конечно, я могу создать форматтер с шаблоном типа "дд / мм / гггг", который даст мне 4-значный год, но он не чувствителен к локали.

Я искал способ изменить форматтер, созданный в стиле "S-", но это не представляется возможным.

Что было бы самым простым способом получить средство форматирования с таким поведением?

2 ответа

Решение

Просто получите шаблон для локализованного короткого стиля и замените "yy" на "yyyy", если его еще нет.

String pattern = DateTimeFormat.patternForStyle("S-", locale);
if (!pattern.contains("yyyy")) {
    pattern = pattern.replace("yy", "yyyy");
}
DateTimeFormatter formatter = DateTimeFormat.forPattern(pattern);

В качестве альтернативы вы можете использовать стандартный формат даты ISO вместо локализованного. ISODateTimeFormat.date() вернет средство форматирования для "гггг-ММ-дд".

Другие вопросы по тегам