gpt4 book ai didi

java - 使用 java api 将公历日期转换为回历日期

转载 作者:搜寻专家 更新时间:2023-11-01 03:21:07 26 4
gpt4 key购买 nike

我有 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,所以请告诉我您的建议以获得正确的回历....等待您的回复....

最佳答案

您在 JodaTime 和 JDK8 之间看到的差异是因为它们使用回历日历的不同实现。有多种算法可以计算(近似)回历日期。

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 - 使用 java api 将公历日期转换为回历日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30420523/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com