java.time.DateTimeException:Hijrah日期超出范围

时间:2017-07-04 08:29:02

标签: java

今天我发现了Java的8 Hijrah Date,我正试图从Hijri日期转换为格里高利日期;我收到了这个错误:

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() ;

日期内容为:1400-01-01

由于

2 个答案:

答案 0 :(得分:4)

根本不需要使用SHOW COLUMNS IN 'table1'DateFormat - 如果您可以使用Java时间API,则应避免使用旧版API。

以下是一个与您的输入“一致”的简单示例:

Calendar

答案 1 :(得分:0)

您可以手动解析输入日期,然后从中创建一个Hijrah日期并将其转换为Gregorian。

public static LocalDate hijrahToGregorian(String input){
    int year = Integer.parseInt(input.substring(0,4));
    int month = Integer.parseInt(input.substring(4,6));
    int day = Integer.parseInt(input.substring(6,8));

    HijrahDate hijrah = HijrahDate.of(year, month, day);
    return IsoChronology.INSTANCE.date(hijrah);
}