无法在 java 中解析一些 Umm Al-Qura 日期,出现 Invalid Hijrah month 错误

Unable to parse some Umm Al-Qura dates in java, getting Invalid Hijrah day of month error

提问人:Hamza Farooq 提问时间:10/10/2023 最后编辑:Anish B.Hamza Farooq 更新时间:10/11/2023 访问量:67

问:

我正在尝试使用 normal、hijri 和 Ummalqura 日历在 java 中解析以下日期,但每次都得到与下面相同的异常

日期:“30-02-1405”或“30-12-1419”

DateTimeException:无效的回历月:30

注意:还有许多其他日期导致相同的问题。

对我来说,似乎我无法将日历类型正确地传递给日历函数。谁能帮我解析这些日期。

以下是我尝试过的代码

// Using the msarhan ummalqura-calendar library

Locale en = Locale.ENGLISH;
        
UmmalquraCalendar calnow = new UmmalquraCalendar(en);

calnow.set(1419, UmmalquraCalendar.THUL_HIJJAH, 30);
        
System.out.println(calnow.getTime());
// Using Java time HijrahChronology

HijrahDate dateOfBirthHijri = HijrahChronology.INSTANCE.date(1405, 2, 30);
Java 时 回历

评论

0赞 Anonymous 10/15/2023
如果你想要这个月的最后一天,你可以与java.time一起使用。该示例生成 。HijrahChronology.INSTANCE.date(1405, 2, 1) .with(TemporalAdjusters.lastDayOfMonth())Hijrah-umalqura AH 1405-02-29

答:

1赞 Anish B. 10/10/2023 #1

THUL_HIJJAH(12月)(1419年)和(1405年2月)只有29天。SAFAR

因此,日期:“30-02-1405”、“30-12-1419”无效。请改用第 29 天。

对此进行更新:

    Locale en = Locale.ENGLISH;

    UmmalquraCalendar calnow = new UmmalquraCalendar(en);

    calnow.set(1419, UmmalquraCalendar.THUL_HIJJAH, 29);

    System.out.println(calnow.getTime());

HijrahDate dateOfBirthHijri = HijrahChronology.INSTANCE.date(1405, 2, 29);
System.out.println(dateOfBirthHijri);

输出:

> Task :Example.main()
Fri Apr 16 19:03:34 IST 1999
Hijrah-umalqura AH 1405-02-29

评论

0赞 Hamza Farooq 10/11/2023
Date 的数据源是政府数据,这些是人们的出生日期,如果您查看下面的网站,则存在第 30 天。datehijri.com/en/hijri30-12-1419togregorianconverter.html
1赞 Hamza Farooq 10/17/2023
Anish,这只是拼写差异,或者可能是发音差异,除此之外,THUL_HIJJAH与 Dhu al-Hijjah 相同,这是第 12 个月也是上个月
0赞 Anish B. 10/18/2023
@HamzaFarooq是的!你是对的。我的错。:)我不认识它。