 # JavaScript: Calculate Islamic Hijri Dates

If you do not need fancy looking hijri calendar widget, or you want to style the calendar text by yourself, or you are a webmaster or a web developer that want to build your own hijri calendar web applications, then the following code may be of use.

The script (modified from Robert van Gent’s page) calculates approximate hijri dates from current computer’s date. It is based on arithmetical calculation to match the current moon phase. The calculation is based on 30-year lunar cycle where length of the lunar months is defined aternatingly as 29 or 30 days. Every two or three year an extra day is added at the end of the year to keep up with the phase of the moon. This formula is also similar to “Kuwaiti Algorithm” used by Microsoft to define Hijri Calendar dates.

```function gmod(n,m){
return ((n%m)+m)%m;
}

var today = new Date();
today = new Date(todaymili);
}
day = today.getDate();
month = today.getMonth();
year = today.getFullYear();
m = month+1;
y = year;
if(m<3) {
y -= 1;
m += 12;
}

a = Math.floor(y/100.);
b = 2-a+Math.floor(a/4.);
if(y<1583) b = 0;
if(y==1582) {
if(m>10)  b = -10;
if(m==10) {
b = 0;
if(day>4) b = -10;
}
}

jd = Math.floor(365.25*(y+4716))+Math.floor(30.6001*(m+1))+day+b-1524;

b = 0;
if(jd>2299160){
a = Math.floor((jd-1867216.25)/36524.25);
b = 1+a-Math.floor(a/4.);
}
bb = jd+b+1524;
cc = Math.floor((bb-122.1)/365.25);
dd = Math.floor(365.25*cc);
ee = Math.floor((bb-dd)/30.6001);
day =(bb-dd)-Math.floor(30.6001*ee);
month = ee-1;
if(ee>13) {
cc += 1;
month = ee-13;
}
year = cc-4716;

} else {
wd = gmod(jd+1,7)+1;
}

iyear = 10631./30.;
epochastro = 1948084;
epochcivil = 1948085;

shift1 = 8.01/60.;

z = jd-epochastro;
cyc = Math.floor(z/10631.);
z = z-10631*cyc;
j = Math.floor((z-shift1)/iyear);
iy = 30*cyc+j;
z = z-Math.floor(j*iyear+shift1);
im = Math.floor((z+28.5001)/29.5);
if(im==13) im = 12;
id = z-Math.floor(29.5001*im-29);

var myRes = new Array(8);

myRes = day; //calculated day (CE)
myRes = month-1; //calculated month (CE)
myRes = year; //calculated year (CE)
myRes = jd-1; //julian day number
myRes = wd-1; //weekday number
myRes = id; //islamic date
myRes = im-1; //islamic month
myRes = iy; //islamic year

return myRes;
}
var wdNames = new Array("Ahad","Ithnin","Thulatha","Arbaa","Khams","Jumuah","Sabt");
var iMonthNames = new Array("Muharram","Safar","Rabi'ul Awwal","Rabi'ul Akhir",
var iDate = kuwaiticalendar(adjustment);
var outputIslamicDate = wdNames[iDate] + ", "
+ iDate + " " + iMonthNames[iDate] + " " + iDate + " AH";
return outputIslamicDate;
}```

To add script (the writeIslamicDate function) without date adjustment:

`document.write(writeIslamicDate());`

And how to with date adjustment of 1 (advanced one day):

`document.write(writeIslamicDate(1));`

source: Al Habib

Artikel terkait:   HTML: Membuat Elemen Tidak Responsive Menjadi Responsive

This site uses Akismet to reduce spam. Learn how your comment data is processed.

Scroll to Top