Номер года конвертировать из григорианского в хиджра ява time4j

Я беру год от пользователя. Как преобразовать его в номер года хиджры? Лучше использовать не jodatime, а time4j или java 8.

Пример: мне нужно с 2016 года иметь номер года хиджры.

Я нашел этот пост, есть ли какая-либо библиотека или алгоритм для персидского (Shamsi или Jalali) календаря в Android?

System.out.println(jalali.transform(PlainDate.class)); // 2015-03-25

Но метод преобразования не работает.

Также я нашел этот пост, чтобы преобразовать хиджры в григорианский: получить григорианскую дату из строк даты хиджры

Но мне нужно от григорианского до хиджры.

1 ответ

Решение

Предложение "Но метод преобразования не работает". Вероятно, следует читать "не компилируется".

Причина в том, что HijriCalendar представляет семейство разных вариантов (например, Umalqura). Технический фон: этот класс наследует от CalendarVariant вместо Calendrical, Поэтому компилятор заставляет вас использовать transform()метод с двумя аргументами. Второй аргумент указывает вариант HijriCalendar, Пример:

PlainDate today = SystemClock.inLocalView().today();

HijriCalendar umalqura = 
  today.transform(HijriCalendar.class, HijriCalendar.VARIANT_UMALQURA);
HijriCalendar westIslamicCivil = 
  today.transform(HijriCalendar.class, HijriAlgorithm.WEST_ISLAMIC_CIVIL);

System.out.println(umalqura); // AH-1437-07-23[islamic-umalqura]
System.out.println(westIslamicCivil); // AH-1437-07-22[islamic-civil]

Этот пример также демонстрирует, почему важно указать вариант. Вы видите разницу в один день (для одной и той же григорианской даты)! На самом деле Time4J поддерживает 11 вариантов. Umalquara-вариант является официальным календарем Саудовской Аравии, в то время как 8 алгоритмических вариантов следует скорее интерпретировать как приближения и иметь более широкий диапазон действия.

Когда у вас есть экземпляр HijriCalendar Вы можете легко получить год хиджры:

int hijriYear = umalqura.getYear();
System.out.println("Year (hirji-umalqura): " + hijriYear); // 1437
Другие вопросы по тегам