Подтвердить что ты не робот

Форматирование Joda-Time для исламской даты

Я использую Joda-Time, чтобы получить Исламскую дату в dd MMMM yyyy, но я всегда получая dd MM yyyy.

Можно посоветовать? может быть, даты Hijri не поддерживаются для форматирования? Это не ясно на сайте Joda-Time.

 DateTime dtISO = new DateTime(2014,2,25,0,0,0,0);
 DateTime dtIslamic = dtISO.withChronology(IslamicChronology.getInstance());
 String formatIslamic= "dd MMMM yyyy";
 DateTimeFormatter formatter = DateTimeFormat.forPattern(formatIslamic).withChronology( IslamicChronology.getInstance());
 String islamicDateString = formatter.print(dtIslamic);
4b9b3361

Ответ 1

В настоящее время это не реализовано. Класс BasicChronology устанавливает поле monthOfYear для использования GJMonthOfYearDateTimeField, который, в свою очередь, получает данные из java.text.DateFormatSymbols. В IslamicChronology используется поле monthOfYear для элемента BasicMonthOfYearDateTimeField, который имеет следующую реализацию getAsText:

public String getAsText(int fieldValue, Locale locale) {
    return Integer.toString(fieldValue);
}

То, что нужно сделать, это создать объект IslamicMonthOfYearDateTimeField, который расширяет BasicMonthOfYearDateTimeField и переопределяет метод, чтобы он возвращал имя месяца, а не числовое значение месяца. Это можно было бы сделать в кодовой базе joda-времени или полностью снаружи. Чтобы получить эту работу за пределами joda, просто расширьту IslamicChronology и переопределите сборку, чтобы вытащить новый исламскийMonthOfYearDateTimeField. Я сам выдал бы запрос на загрузку, но я сомневаюсь, что они примут нелокализованное решение.