Это просто, когда вы знаете, как:
LocalDate gregorianDate = LocalDate.of(2019, Month.FEBRUARY, 22);
HijrahDate hijradate = HijrahDate.from(gregorianDate);
System.out.println(hijradate);
Это напечатано
Hijrah-umalqura AH 1440-06-17
Если под григорианской датой вы имели в виду, что ваша дата была в объекте GregorianCalendar
(обычно изустаревший API, который вы не можете изменить или не хотите изменять прямо сейчас):
GregorianCalendar gregCal = // ...
ZonedDateTime gregorianDateTime = gregCal.toZonedDateTime();
System.out.println(gregorianDateTime);
HijrahDate hijradate = HijrahDate.from(gregorianDateTime);
System.out.println(hijradate);
Выход за один прогон на моем компьютере был:
2019-02-22T00:00+03:00[Asia/Riyadh]
Hijrah-umalqura AH 1440-06-17
РЕДАКТИРОВАТЬ: Для полноты картины приведу мой импорт, чтобы вы точно знали, какие классы я использую:
import java.time.LocalDate;
import java.time.Month;
import java.time.ZoneId;
import java.time.ZonedDateTime;
import java.time.chrono.HijrahDate;
import java.util.GregorianCalendar;
РЕДАКТИРОВАТЬ: Чтобы получить месяц, воспользуйтесь поисковой системой.Я использовал мой и нашел:
int month = hijradate.get(ChronoField.MONTH_OF_YEAR);
System.out.println(month);
String formattedMonthName
= hijradate.format(DateTimeFormatter.ofPattern("MMMM", new Locale("ar")));
System.out.println(formattedMonthName);
Это печатает
6
جمادى الآخرة
Последние строки вдохновлены этот ответ .