使用java api将格里高利日期转换为Hijri日期
作者:互联网
我有jdk java版“1.8.0_45”,我正在使用joda time api(joda-time-2.7.jar)
By using Joda time api i am getting a wrong date.
By using Jdk 8 hijri date api i am getting a correct date.
我需要使用java api将格里高利日期转换为日期.
我的示例测试类如下:
import org.joda.time.*;
import org.joda.time.chrono.*;
import java.time.*;
import java.time.chrono.HijrahChronology;
import java.util.*;
public class Test {
public static void main(String[] args) throws Exception {
DateTime dtISO = new DateTime();
System.out.println("dtISO = "+dtISO);
DateTime dtIslamic = dtISO.withChronology(IslamicChronology.getInstance(DateTimeZone.UTC ));
System.out.println(dtIslamic.getYear()+"-" +dtIslamic.getMonthOfYear()+ "-"+ dtIslamic.getDayOfMonth());
java.time.chrono.HijrahDate hijradate = java.time.chrono.HijrahDate.now();
System.out.println("hijradate "+hijradate);
}
}
这个类的输出是
C:\>java Test
dtISO = 2015-05-24T09:44:51.704+04:00
1436-8-5
hijradate Hijrah-umalqura AH 1436-08-06
你能告诉我joda api是正确的还是错的?
我的生产服务器有JDK1.6我现在无法升级到1.8,所以请让我知道你的建议,以获得正确的hijri约会….等待你的回复….
解决方法:
您在JodaTime和JDK8之间看到的差异是因为他们使用Hijri日历的不同实现.有多种算法来计算(近似)Hijri日期.
Jdk8的HijrahChoronology使用了Umm-AlQura日历的实现,该日历与http://www.ummulqura.org.sa/中定义的沙特阿拉伯官方Hijri日历非常匹配.
JodaTime IslamicChronology有不同的实现,您可以使用其工厂方法选择,参见http://joda-time.sourceforge.net/apidocs/org/joda/time/chrono/IslamicChronology.html
所以它真的取决于系统受众.如果您在沙特阿拉伯或任何依赖于UmmAlQura日历的国家/地区实施JDK8.
标签:java,hijri 来源: https://codeday.me/bug/20190702/1359930.html