Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/333.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在巴基斯坦,从公历到希吉历/伊斯兰日期的转换_Java_Date_Jodatime_Hijri - Fatal编程技术网

Java 在巴基斯坦,从公历到希吉历/伊斯兰日期的转换

Java 在巴基斯坦,从公历到希吉历/伊斯兰日期的转换,java,date,jodatime,hijri,Java,Date,Jodatime,Hijri,我需要显示客户在巴基斯坦网站的Hijri日期。我不能使用web服务,因为在客户端的站点上,internet可能并不总是可用的 我一直在使用joda time(java),但javascript解决方案也可以 Joda time目前将其计算为第5个月的第5天 (Jamadi ul Awal),而在巴基斯坦,它是Jammadi ul Awal的第四个 以下是我的代码: public class HijriDate { /** * @param args */ p

我需要显示客户在巴基斯坦网站的Hijri日期。我不能使用web服务,因为在客户端的站点上,internet可能并不总是可用的

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

Joda time目前将其计算为第5个月的第5天 (Jamadi ul Awal),而在巴基斯坦,它是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());


    }

}
公共类HijriDate{
/**
*@param args
*/
公共静态void main(字符串[]args){
日期=新日期();
SimpleDataFormat frmt=新SimpleDataFormat(“yyyy-MM-dd”);
字符串currenDate=frmt.format(日期);
系统输出打印项次(currenDate);
字符串[]dt=currenDate.split(“-”);
DateTimeZone defaultZone=DateTimeZone.getDefault();
DateTimeZone.setDefault(defaultZone);
DateTime dtISO=newdatetime(Integer.parseInt((dt[0]))、Integer.parseInt((dt[1])、Integer.parseInt((dt[2])、0,0,0);
DateTimeZone=DateTimeZone.forID(TimeZone.getDefault().getID());
DateTime dtIslamic=dtISO.withChronology(IslamicChronology.getInstance(tzPakistan,IslamicChronology.LEAP_YEAR_15_为基础));
字符串[]HMONTS={”、“穆哈拉姆”、“萨法尔”、“拉比·阿瓦勒”、“拉比·阿赫勒”、“贾马迪·阿瓦勒”、“贾马迪·阿赫勒”、“拉贾布”、“青年党”、“拉马丹”、“肖瓦尔”、“齐尔卡德”、“齐尔哈吉”};
int mnth=dtIslamic.getMonthOfYear();
字符串hijriMonth=“”;
对于(int i=0;i=0;d=d-2){
计数--;
如果(计数=0){
年份=a[d];
}
如果(计数=1){
day=a[d]。子串(0,2);
}
}
System.out.println(hijriMonth+“”+日+“”,“+年);
System.out.println(TimeZone.getDefault().getID());
}
}
我还尝试将闰年参数修改为4个可用日期中的每一个。

月份从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月的C.E.你可以看看。

你看到我的答案了吗?是的,亲爱的,我看到了你的消息。这个程序在阿拉伯日历上运行,但在巴基斯坦显示的日期不正确