我需要显示巴基斯坦客户网站的回历日期。我不能使用网络服务,因为互联网可能并不总是在客户的站点上可用。
我一直在使用 joda-time (java),但也可以使用 javascript 解决方案。
Joda-time 目前计算为第 5 个月的第 5 天 (Jamaadi-ul-Awal),而在巴基斯坦,它是 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 个可用参数中的每一个。