编程语言
首页 > 编程语言> > 使用java api将格里高利日期转换为Hijri日期

使用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