今天我发现了 Java 的 8 Hijrah Date,我正在尝试从 Hijri 日期转换为 gregorian 日期;我一直收到这个错误:
java.time.DateTimeException: Hijrah 日期超出范围
String repayDate = date.substring(0, 4)+"-"+date.substring(4, 6)+"-"+date.substring(6, 8);
DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
Date inputDate = dateFormat.parse(repayDate);
Calendar cl=Calendar.getInstance();
cl.setTime(inputDate);
HijrahDate hDate= HijrahChronology.INSTANCE.date(LocalDate.of(cl.get(1),cl.get(Calendar.MONTH)+1, cl.get(Calendar.DATE)));
return IsoChronology.INSTANCE.date(hDate).toString() ;
Run Code Online (Sandbox Code Playgroud)
日期内容为:1400-01-01
谢谢
根本不需要使用 aDateFormat和 a Calendar- 如果您可以使用 Java 时间 API,您应该避免使用旧版 API。
这是一个与您的输入“有效”的简单示例:
String date = "14000101";
TemporalAccessor ta = DateTimeFormatter.ofPattern("uuuuMMdd")
.withChronology(HijrahChronology.INSTANCE)
.parse(date);
HijrahDate hDate = HijrahDate.from(ta);
System.out.println("hDate = " + hDate);
System.out.println("Gregorian date = " + IsoChronology.INSTANCE.date(hDate).toString());
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
473 次 |
| 最近记录: |