Kalender Islam (Hijri) ditentukan berdasarkan penampakan hilal dengan siklus rata-rata 29,5306 hari. Maka satu tahun hijriyah adalah 354,3671 hari. Dan menurut data sejarah tentang hijrah Rasulullah s.a.w., 1 Muharram 1 H. bertepatan dengan tanggal 16 Juli 622 M. Dengan data ini dapat dihitung selisih jumlah hari suatu tanggal hijriyah terhadap kalender Masehi untuk menentukan konversinya.
Kalender syamsiah (Masehi) ditentukan berdasarkan periode kembalinya matahari ke titik musim semi, yaitu 365,2422 hari. Sedangkan jumlah hari setiap bulannya ditentukan berdasarkan konvensi saja. Sebelum Reformasi Gregorius pada 1582, jumlah hari rata-rata per tahun adalah 365,25 hari dengan menggunkan tahun kabisat setiap empat tahun. Gregorius memperbarui sistem Julius tersebut dengan menggunakan jumlah hari rata-rata per tahun 365,2425 hari yang lebih mendekati kenyataan. Reformasi Gregorius ini menyebabkan "lompatan" tanggal dari 4 Oktober langsung ke 15 Oktober 1582, tanpa mengubah urutan harinya.
Dalam program ini reformasi Gregorius tersebut dianggap segera diterapkan, walaupun tidak semua negara melakukannya, misalnya Jepang masih menggunakan sistem Julius sampai 1872. Program ini berlaku untuk mengkonversikan kalender sampai tahun 2099, termasuk juga menentukan hari sejak 1 Januari 1 M.
Satu hal yang harus diperhatikan adalah kemungkinan "perbedaan", plus atau minus, sekitar satu hari. Kemungkinan "perbedaan" ini tidak dapat dihindarkan karena Garis Tanggal Islam bergeser setiap bulan, relatif terhadap Garis Tanggal Internasional. Selain itu, perhitungan dengan kriteria penampakan hilal tidak praktis untuk konversi kalendar. Karenanya perbedaan, sekitar satu hari, dengan hasil rukyat (mengamati hilal) mungkin juga terjadi. Karenanya untuk konversi kalender hijri ke masehi, hari tidak dihitung.
1. Konversi Kalender Islam (Hijri) ke Masehi
2. Konversi Kalender Masehi ke Hijri
*> Tanggal, bulan, dan tahun .
Untuk mencari hari suatu tanggal Masehi sampai tahun 2099, gunakan pilihan.
* : "Perbedaan" pada kalender Masehi untuk tanggal hijriah yang sama dijelaskan di atas.
10 PRINT "*********CALENDAR CONVERSION PROGRAM ********"
20 PRINT " HIJRI(ISLAMIC CALENDAR) <--> SOLAR CALENDAR "
30 PRINT " (CAUTION:THERE IS THE ISLAMIC DATE LINE "
40 PRINT " WHICH CAUSES THIS CALCULATION MAY "
50 PRINT " DIFFER ABOUT (+/-) 1 DAY) "
60 PRINT " [6 AUGUST 1991, 25 MUHARRAM 1412] "
70 PRINT " CALCULATED BY T.DJAMALUDDIN "
80 PRINT " DEPT. OF ASTRONOMY, KYOTO UNIVERSITY "
90 PRINT " SAKYO-KU, KYOTO 606, JAPAN "
100 PRINT "*********************************************"
110 PRINT
120 PRINT "1. CONVERSION HIJRI(ISLAMIC CALENDAR) TO SOLAR CALENDAR"
130 PRINT "2. CONVERSION SOLAR CALENDAR TO HIJRI(ISLAMIC CALENDAR)"
140 PRINT
150 INPUT "CONVERSION (1 OR 2) OR STOP(0)"; CONV
160 IF CONV=2 GOTO 820
165 IF CONV=0 THEN GOTO 1500
170 PRINT "***CONVERSION HIJRI TO SOLAR CALENDAR***
180 PRINT
190 INPUT " DATE ";HD
200 PRINT " 1. MUHARRAM 7. RAJAB "
210 PRINT " 2. SAFAR 8. SHABAN "
220 PRINT " 3. RABIUL AWAL 9. RAMADAN "
230 PRINT " 4. RABIUL AKHIR 10. SHAWAL "
240 PRINT " 5. JUMADIL AWAL 11. ZULQAIDAH "
250 PRINT " 6. JUMADIL AKHIR 12. ZULHIJJAH "
260 INPUT " MONTH ";HM
270 INPUT " YEAR ";HY
280 NHD1= (HY-1)*354.3671+(HM-1)*29.5306+HD : NHD = INT(NHD1)
290 NSD = NHD1 + 227016!
300 IF NHD > 350721! THEN GC = 10 ELSE GC = 0
310 IF NHD > 393898! THEN GC = 11
320 IF NHD > 430422! THEN GC = 12
330 IF NHD > 466946! THEN GC = 13
340 SY = INT((NSD+GC)/365.25) + 1
350 MN = CINT((NSD+GC)-(SY-1)*365.25)
360 MN1 = 0 : SM = 1
370 IF MN>31 THEN MN1 = 31 : SM = 2
380 IF INT(SY/4) = SY/4 THEN GOSUB 700 ELSE GOSUB 580
390 IF SY = 1700 OR SY = 1800 THEN GOSUB 580
400 IF SY = 1900 THEN GOSUB 580
410 '************RESULT************
420 IF SM = 1 THEN SM$ = " JANUARY "
430 IF SM = 2 THEN SM$ = " FEBRUARY "
440 IF SM = 3 THEN SM$ = " MARCH "
450 IF SM = 4 THEN SM$ = " APRIL "
460 IF SM = 5 THEN SM$ = " MAY "
470 IF SM = 6 THEN SM$ = " JUNE "
480 IF SM = 7 THEN SM$ = " JULY "
490 IF SM = 8 THEN SM$ = " AUGUST "
500 IF SM = 9 THEN SM$ = " SEPTEMBER "
510 IF SM =10 THEN SM$ = " OCTOBER "
520 IF SM =11 THEN SM$ = " NOVEMBER "
530 IF SM =12 THEN SM$ = " DECEMBER "
540 SD = MN - MN1
550 PRINT
560 PRINT HD;".";HM;".";HY;" HIJRI IS ";SD;SM$;SY;"A.D."
570 PRINT : PRINT: GOTO 110
580 '*****ORDINARY (BASITAH) YEAR******
590 IF MN > 59 THEN MN1 = 59 : SM = 3
600 IF MN > 90 THEN MN1 = 90 : SM = 4
610 IF MN >120 THEN MN1 =120 : SM = 5
620 IF MN >151 THEN MN1 =151 : SM = 6
630 IF MN >181 THEN MN1 =181 : SM = 7
640 IF MN >212 THEN MN1 =212 : SM = 8
650 IF MN >243 THEN MN1 =243 : SM = 9
660 IF MN >273 THEN MN1 =273 : SM =10
670 IF MN >304 THEN MN1 =304 : SM =11
680 IF MN >334 THEN MN1 =334 : SM =12
690 RETURN
700 '*******LEAP (KABISAT) YEAR********
710 IF MN > 60 THEN MN1 = 60 : SM = 3
720 IF MN > 91 THEN MN1 = 91 : SM = 4
730 IF MN >121 THEN MN1 =121 : SM = 5
740 IF MN >152 THEN MN1 =152 : SM = 6
750 IF MN >182 THEN MN1 =182 : SM = 7
760 IF MN >213 THEN MN1 =213 : SM = 8
770 IF MN >244 THEN MN1 =244 : SM = 9
780 IF MN >274 THEN MN1 =274 : SM =10
790 IF MN >305 THEN MN1 =305 : SM =11
800 IF MN >335 THEN MN1 =335 : SM =12
810 RETURN
820 PRINT "***SOLAR CALENDAR TO HIJRI***"
830 PRINT
840 INPUT " DATE ";SD
850 PRINT " 1. JANUARY 7. JULY "
860 PRINT " 2. FEBRUARY 8. AUGUST "
870 PRINT " 3. MARCH 9. SEPTEMBER "
880 PRINT " 4. APRIL 10. OCTOBER "
890 PRINT " 5. MAY 11. NOVEMBER "
900 PRINT " 6. JUNE 12. DECEMBER "
910 INPUT " MONTH ";SM
920 INPUT " YEAR ";SY
930 IF SM = 1 THEN MN = 0
940 IF SM = 2 THEN MN = 31
950 IF SM = 3 THEN MN = 59
960 IF SM = 4 THEN MN = 90
970 IF SM = 5 THEN MN =120
980 IF SM = 6 THEN MN =151
990 IF SM = 7 THEN MN =181
1000 IF SM = 8 THEN MN =212
1010 IF SM = 9 THEN MN =243
1020 IF SM =10 THEN MN =273
1030 IF SM =11 THEN MN =304
1040 IF SM =12 THEN MN =334
1050 Y = SY + (MN+SD)/365.25
1060 IF Y>1582.76 AND Y<1582.788 THEN PRINT "GREGORIAN : OMITTED": GOTO 110
1070 IF Y>1582.76 THEN GC = 10 ELSE GC = 0
1080 IF Y>1701 THEN GC = 11
1090 IF Y>1801 THEN GC = 12
1100 IF Y>1901 THEN GC = 13
1110 YDN = (SY-1)*365.25
1120 IF SM < 3 THEN GOTO 1160
1130 IF INT(SY/4) = SY/4 THEN MN = MN+1
1140 IF SY = 1700 THEN MN = MN - 1
1150 IF SY = 1800 OR SY = 1900 THEN MN = MN - 1
1160 NSD = YDN + MN + SD - GC
1170 NHD1= NSD - 227016! : NHD = INT(NHD1)
1180 HY = INT(NHD1/354.3671 + 1)
1190 HM1 = CINT(NHD1 - (HY-1)*354.3671)
1200 HM = INT(HM1/29.5306) + 1
1210 HD = CINT(HM1 - (HM-1)*29.5306 ) : GOSUB 1400
1220 IF HD = 0 THEN HM = HM-1 : HD = 30
1230 '************RESULT************
1240 IF HM = 0 THEN HM$ = " ZULHIJJAH " : HY = HY - 1
1250 IF HM = 1 THEN HM$ = " MUHARRAM "
1260 IF HM = 2 THEN HM$ = " SAFAR "
1270 IF HM = 3 THEN HM$ = " RABIUL AWAL "
1280 IF HM = 4 THEN HM$ = " RABIUL AKHIR "
1290 IF HM = 5 THEN HM$ = " JUMADIL AWAL "
1300 IF HM = 6 THEN HM$ = " JUMADIL AKHIR"
1310 IF HM = 7 THEN HM$ = " RAJAB "
1320 IF HM = 8 THEN HM$ = " SHABAN "
1330 IF HM = 9 THEN HM$ = " RAMADAN "
1340 IF HM =10 THEN HM$ = " SHAWAL "
1350 IF HM =11 THEN HM$ = " ZULQAIDAH "
1360 IF HM =12 THEN HM$ = " ZULHIJJAH "
1370 PRINT
1380 PRINT SD;".";SM;".";SY;" A.D IS "; HD; HM$; HY; " HIJRI ";"(";DD$;")"
1390 PRINT : PRINT: GOTO 110
1400 '************THE DAY************
1410 NHD1 = NHD-7*INT(NHD/7) : DD = NHD1 MOD 7
1420 IF DD = 0 THEN DD$ = " THURSDAY "
1430 IF DD = 1 THEN DD$ = " FRIDAY "
1440 IF DD = 2 THEN DD$ = " SATURDAY "
1450 IF DD = 3 THEN DD$ = " SUNDAY "
1460 IF DD = 4 THEN DD$ = " MONDAY "
1470 IF DD = 5 THEN DD$ = " TUESDAY "
1480 IF DD = 6 THEN DD$ = " WEDNESDAY "
1490 RETURN
1500 SYSTEM