변환 예에 관해서는 사우디 - 아라비아의 공식 캘린더 인 Hijri-calendar의 Umalqura 변형을 찾는 것으로 보입니다.
게시 한 SO 링크가 Joda-Time을 가리 킵니다. 이 라이브러리는 umalqura를 지원하지 않지만 히스 리 캘린더의 4 가지 알고리즘 변형 (근사값으로 만 사용) 만 지원합니다. 4 가지 변형본을 모두 테스트했습니다. 아무 것도 당신을위한 것이 아닙니다.
Chronology iso = ISOChronology.getInstanceUTC();
Chronology hijri =
IslamicChronology.getInstance(DateTimeZone.UTC, IslamicChronology.LEAP_YEAR_INDIAN);
LocalDate todayIso = new LocalDate(2016, 9, 20, iso);
LocalDate todayHijri = new LocalDate(todayIso.toDateTimeAtStartOfDay(), hijri);
System.out.println("joda=" + todayHijri);
// LEAP_YEAR_15_BASED => 1437-12-16
// LEAP_YEAR_16_BASED => 1437-12-16
// LEAP_YEAR_HABASH_AL_HASIB => 1437-12-17
// LEAP_YEAR_INDIAN => 1437-12-17
당신은 다음과 같은 솔루션을 사용할 수 있습니다
자바-8 -platform에서 작동하는 경우. 당신이 안드로이드에있는 다음 백 포트의 ThreetenABP를 사용하려고하면 그 구현은 자바-8에서 벗어나 있기 때문에, 그 실패합니다
HijrahDate hd = HijrahDate.from(LocalDate.of(2016, 9, 20));
System.out.println("java.time=" + hd); // Hijrah-umalqura AH 1437-12-19
다른 변종 또는 일의 변수 시작 같은 더 달력 기능을 원하는 경우 (이슬람 일몰에서 시작합니다!) 또는 Android에서 작업하는 경우 Time4J/A 라이브러리를 사용할 수 있습니다. 마지막 예제는 정오 시간에 유효한 변환입니다
System.out.println(
PlainDate.of(2016, 9, 20)
.transform(HijriCalendar.class, HijriCalendar.VARIANT_UMALQURA));
// AH-1437-12-19[islamic-umalqura]
하는 것으로 (안드로이드 또는 Time4A)에 HijriCalendar of Time4J은 당신이 원하는 것을 얻을 수 있습니다. 하루의 시작으로 저녁을 사용하는 경우 javadoc에 문의하십시오.
2016년 9월 7일에서 업데이트 : 안드로이드에 대한 매우 다른 API를
다른 가능한 umalqura 솔루션 (
이
고마워, 저에게 도움이되었습니다. –
또한 Umalqura 캘린더를위한 훌륭한 라이브러리를 발견했습니다. [link] (https://github.com/msarhan/ummalqura-calendar) –