3

パキスタンのクライアントの Web サイトにイスラム暦の日付を表示する必要があります。クライアントのサイトでインターネットが常に利用できるとは限らないため、Web サービスを使用できません。

私は joda-time (java) を使用していますが、javascript ソリューションも機能します。

Joda-time は現在、5 番目の月 (Jamaadi-ul-Awal) の 5 日として計算していますが、パキスタンでは Jammadi-ul-Awal の 4 日です。

以下は私のコードです:

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 つのそれぞれに対して、うるう年のパラメーターを変更してみました。

4

1 に答える 1

1

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 月の CE については、こちらを参照してください

于 2015-02-25T13:07:01.220 に答える