Joda Time плохое форматирование при использовании локалей кроме английского
Я использую Joda Time 2.9.9 в Android. Когда Locale установлен на английский, звонки как datetime.monthOfYear().getAsText(locale)
а также datetime.monthOfYear().getAsShortText(locale)
возвращаемые строки, отформатированные как February
а также Feb
соответственно.
Но когда локаль должна быть испанской, она возвращает такие строки, как february
а также feb.
(фактические значения на испанском языке, я перевел их).
Есть ли способ заставить его возвращать хорошие отформатированные строки, с заглавными буквами и без точек, при использовании других локалей?
И бонусный вопрос: если нет никакого способа, хорошая подкласса класса datetime и форматирование строки там?
1 ответ
Joda-Time получает эту информацию от JVM DateFormatSymbols
и я не уверен, могут ли они быть заменены через API (возможно, вы можете сделать это с помощью рефлексии, но мне лично не нравится делать это в рабочем коде).
Во всяком случае, я думаю, что вы можете адаптировать решение, найденное в этом вопросе: Название месяца в родительном падеже (польский язык) с Joda-Time DateTimeFormatter
PS: я не могу воспроизвести ошибку, код ниже:
DateTime datetime = new DateTime();
System.out.println(datetime.monthOfYear().getAsText(new Locale("es")));
System.out.println(datetime.monthOfYear().getAsShortText(new Locale("es")));
дает мне "febrero" и "feb"