Йодатиме: как напечатать 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() вернет средство форматирования для "гггг-ММ-дд".