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"

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