将公历转换为回历日期
2022-09-03 08:30:21
我想从公历转换为回历(伊斯兰)日期,我需要一个java类进行此转换。我想给它一个公历日期,格式为“yyyy/mm/dd”作为字符串,它以相同的格式给我回历日期。任何人都可以帮助我吗?
我想从公历转换为回历(伊斯兰)日期,我需要一个java类进行此转换。我想给它一个公历日期,格式为“yyyy/mm/dd”作为字符串,它以相同的格式给我回历日期。任何人都可以帮助我吗?
首先,将转换部分与格式化/解析部分分开。你以后可以很容易地处理这些问题 - Stack Overflow上有很多关于这个问题的问题。
就我个人而言,我会使用Joda Time,这通常会使生活变得更加简单。例如:
import org.joda.time.Chronology;
import org.joda.time.LocalDate;
import org.joda.time.chrono.IslamicChronology;
import org.joda.time.chrono.ISOChronology;
public class Test {
public static void main(String[] args) throws Exception {
Chronology iso = ISOChronology.getInstanceUTC();
Chronology hijri = IslamicChronology.getInstanceUTC();
LocalDate todayIso = new LocalDate(2013, 3, 31, iso);
LocalDate todayHijri = new LocalDate(todayIso.toDateTimeAtStartOfDay(),
hijri);
System.out.println(todayHijri); // 1434-05-19
}
}
(感觉应该有一种更清晰的方式在年表之间转换日期,但我无法立即找到一个。
Java 8 是支持 Hejrah Date 的内置功能
例:
import java.time.*;
import java.time.chrono.HijrahChronology;
Date date = new Date(); // Gregorian date
Calendar cl=Calendar.getInstance();
cl.setTime(date);
HijrahDate islamyDate = HijrahChronology.INSTANCE.date(LocalDate.of(cl.get(Calendar.YEAR),cl.get(Calendar.MONTH)+1, cl.get(Calendar.DATE)));
//OUTPUT: Hijrah-umalqura AH 1436-02-03