今天我发现了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
由于
答案 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);
}