그 레고 레인 연도를 회교 연도로 어떻게 변환 할 수 있습니까?

Aug 17 2020

HijrahChronology 라이브러리를 사용하여 Java 8에서 Gregorian 날짜를 Hijri 날짜로 변환하고 싶습니다. 아래 코드를 시도했지만 정확하게 작동하지 않습니다.

  Date date = new Date(); // Gregorian date
  Calendar cl=Calendar.getInstance();
  cl.set(Calendar.YEAR, date.getYear());

  HijrahDate islamyDate = HijrahChronology.INSTANCE.date(LocalDate.of(cl.get(Calendar.YEAR),cl.get(Calendar.MONTH)+1, cl.get(Calendar.DATE)));
        DateTimeFormatter dateFormatter = DateTimeFormatter.ofPattern("uuuu");
        String gregorianString = "1994";
        LocalDate gregorianDate = LocalDate.parse(gregorianString, dateFormatter);
        HijrahDate islamicDate = HijrahDate.from(gregorianDate);
        System.out.println("Islamic date: " + islamicDate);

업데이트 : 연도 부분 만 변환하고 싶습니다.

답변

3 LiveandLetLive Aug 17 2020 at 10:06

당신은 간단하게 전달할 수 있습니다 TemporalAccessor예를 들어 LocalDate, ZonedDateTime로 등을 HijrahChronology.INSTANCE#date아래와 같이 :

import java.time.LocalDate;
import java.time.Month;
import java.time.ZoneId;
import java.time.chrono.HijrahChronology;
import java.time.chrono.HijrahDate;
import java.time.temporal.TemporalAdjusters;

public class Main {
    public static void main(String[] args) {
        // Change the time-zone as per your requirement.
        ZoneId myZoneId = ZoneId.of("Etc/UTC");

        HijrahDate hijrahDate1 = HijrahChronology.INSTANCE.date(LocalDate.now(myZoneId));
        System.out.println(hijrahDate1);

        // ########Another example########

        // HijrahDate on the last day of January 1994 at the time zone of Etc/UTC
        HijrahDate hijrahDate2 = HijrahChronology
                .INSTANCE                                   // Instance of HijrahChronology
                .date(LocalDate.of(1994, Month.JANUARY, 1)  // LocalDate of 01-Jan-1994
                .with(TemporalAdjusters.lastDayOfMonth())   // On the last day of Jan-1994
                .atStartOfDay()                             // At the start of the day i.e. 00:00
                .atZone(myZoneId));                         // At the time zone of Etc/UTC
        System.out.println(hijrahDate2);
    }
}

산출:

Hijrah-umalqura AH 1441-12-27
Hijrah-umalqura AH 1414-08-19

Trail : Date Time 에서 Java-8 날짜-시간 API에 대해 자세히 알아보십시오 .