从未来的格里高利日期获取Hijri日期

时间:2018-05-25 23:05:01

标签: java calendar hijri

我如何从下面的代码中获取hijradate,而不是现在()我想从未来的日期得到这个。

java.time.chrono.HijrahDate hijradate = java.time.chrono.HijrahDate.now();
System.out.println("hijradate "+hijradate);

1 个答案:

答案 0 :(得分:1)

当你知道如何:

时,这很简单
    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
جمادى الآخرة

最后一行的灵感来自this answer