gpt4 book ai didi

java - 巴基斯坦从公历到回历/伊斯兰日期的转换

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:01:24 26 4
gpt4 key购买 nike

我需要显示巴基斯坦客户网站的回历日期。我无法使用 Web 服务,因为客户站点可能无法始终使用 Internet。

我一直在使用 joda-time (java),但 javascript 解决方案也可以。

Joda-time is currently calculating it as 5th day of 5th month (Jamaadi-ul-Awal), while in Pakistan it is 4th of Jammadi-ul-Awal

以下是我的代码:

public class HijriDate {

/**
* @param args
*/
public static void main(String[] args) {

Date date=new Date();
SimpleDateFormat frmt=new SimpleDateFormat("yyyy-MM-dd");
String currenDate=frmt.format(date);
System.out.println(currenDate);
String[] dt=currenDate.split("-");

DateTimeZone defaultZone = DateTimeZone.getDefault();
DateTimeZone.setDefault(defaultZone);

DateTime dtISO = new DateTime(Integer.parseInt((dt[0])),Integer.parseInt((dt[1])), Integer.parseInt((dt[2])), 0, 0, 0, 0);

DateTimeZone tzPakistan = DateTimeZone.forID(TimeZone.getDefault().getID());
DateTime dtIslamic =dtISO.withChronology(IslamicChronology.getInstance(tzPakistan,IslamicChronology.LEAP_YEAR_15_BASED));

String [] hmonths= {"","Muharram", "Safar", "Rabi al-Awwal", "Rabi al-Akhir", "Jamadi al-Awwal", "Jamadi al-Akhir", "Rajab", "Shabaan", "Ramadhan", "Shawwal", "Zilqad", "Zilhajj"};
int mnth=dtIslamic.getMonthOfYear();
String hijriMonth="";
for(int i=0;i<hmonths.length;i++){

if(hmonths[mnth] != null){
hijriMonth=hmonths[mnth];
break;
}

}

String dat=dtIslamic.toString();
String a[]= dat.split("-");
int count=2;
String day="";
String year="";
for(int d=2;d>=0;d=d-2){
count--;
if(count==0){
year=a[d];
}
if(count==1){
day=a[d].substring(0,2);


}
}

System.out.println(hijriMonth+" "+day+","+year);
System.out.println(TimeZone.getDefault().getID());


}

}

我还尝试将闰年参数修改为 4 个可用参数中的每一个。

最佳答案

Jumada al-awwal一个月的天数从 2015 年 2 月 20 日开始到 2015 年 3 月 20 日结束。

AH    First day (CE / AD)     Last day (CE / AD)
1431 15 April 2010 14 May 2010
1432 5 April 2011 3 May 2011
1433 24 March 2012 21 April 2012
1434 13 March 2013 10 April 2013
1435 2 March 2014 31 March 2014
**1436 20 February 2015 20 March 2015**
1437 10 February 2016 9 March 2016

当我执行你的代码时,输​​出是;

2015-02-25
Jamadi al-Awwal 06,1436

没错,年份必须是 1436 年,一天从 20 开始,今天是第 6 天。

   1          2          3          4       5       6
Feb 20 Feb 21 Feb 22 Feb 23 Feb 24 Feb 25

对于公元 2015 年 2 月,您可以查看 here .

关于java - 巴基斯坦从公历到回历/伊斯兰日期的转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28693959/

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