月日为30时发生Java 8 Hijrah日期错误

月日为30时发生Java 8 Hijrah日期错误,java,Java,我在使用Hijrah date时遇到了一个错误 错误是: Invalid Hijrah day of month: 30 代码是: String date = 13820630; HijrahDate hDate= HijrahChronology.INSTANCE.date(Integer.valueOf(date.substring(0, 4)),Integer.valueOf(date.substring(4, 6)), Integer.valueOf(date.subs

我在使用Hijrah date时遇到了一个错误

错误是:

Invalid Hijrah day of month: 30
代码是:

String date = 13820630;
        HijrahDate hDate= HijrahChronology.INSTANCE.date(Integer.valueOf(date.substring(0, 4)),Integer.valueOf(date.substring(4, 6)), Integer.valueOf(date.substring(6, 8))); 
有什么想法吗


谢谢

根据《HijrahDate》课程,1372-06月只有29天

HijrahDate date = HijrahChronology.INSTANCE.date(1382, 6, 1);
System.out.println(date.lengthOfMonth());
此代码打印29个字符

对say的评论

根据确定新月发生的时间和观测地点的不同,Hijrah历法有几种变体。在一些变体中,每个月的长度是根据月球和地球的天文数据通过算法计算出来的,而在另一些变体中,月的长度是通过授权观测新月来确定的。对于基于算法的日历,日历可以投射到未来。对于基于观测的日历,只有来自过去观测的历史数据可用

因此,本年表使用的变体可能与您预期的有所不同


其他变体可通过
Hijrah年表
的注释获得,如“Hijrah日历根据新月发生的时间和观测地点的不同而有几种变体。”--大概是课堂上的逻辑决定了那一年中的特定月份只有29天。默认情况下,Hijrah年表使用“Hijrah Umm al-Qura”日历,以下是指导特定年表工作的方法。正如您所看到的,在属性文件中,“1382年06月”只有29天(这并不棘手,只是添加了来自何处的内容)。