Program Jadwal Shalat


T. Djamaluddin
 

Awal tahun 1990 ketika kuliah S2 dan S3 di Kyoto University, Department of Astronomy, saya menyusun program jadwal shalat berdasarkan algoritma posisi matahari. Pembuatan program itu terdorong oleh kebutuhan teman-teman mahasiswa Muslim di Jepang untuk menentukan jadwal waktu shalat di kota mereka. Internet belum banyak berkembang, selain untuk e-mail. Sehingga tidak ada sumber informasi untuk mendapatkan jadwal shalat. Sewaktu ada tawaran seminar Islamic Computation (nama tepatnya lupa) di AS tahun 1991, saya kirim program saya dalam bahasa Basic (tanpa kehadiran saya) kepada Organizing Committee. Rupanya program jadwal shalat itu menarik perhatian dan diterjemahkan menjadi bahasa fortran untuk SO UNIX. Alhamdulillah, program itu termasuk generasi pertama yang menyebar ke berbagai negara yang direlease 1991. Ada juga yang meminta izin untuk menterjemahkan ke bahasa C. Catatan program jadwal shalat generasi pertama bisa di lihat di

http://www.faqs.org/faqs/islam-faq/part11/

http://www.africa.upenn.edu/Software/Islamic_Computing_11765.html

5 ‘************************************************
10 ‘PRAYER TIME TABLE FOR ANY REGION IN THE WORLD
20 ‘BETWEEN LATITUDE 65 N – 65 S
30 ‘ CALCULATED BY T.DJAMALUDDIN
40 ‘ DEPT. OF ASTRONOMY, KYOTO UNIVERSITY
50 ‘ SAKYO-KU, KYOTO 606, JAPAN
60 ‘************************************************
61 INPUT “NAME OF FILE, e.g. D:SALAT.TKY”;FILE$
65 OPEN FILE$ FOR OUTPUT AS #1
70 RAD = 3.14159/180
80 INPUT “CITY’S NAME =”;CITY$
90 INPUT “CITY’S LONGITUDE; WEST : negative (in DEGREES)=”;LAMD
100 INPUT “CITY’S LATITUDE ; SOUTH: negative (in DEGREES)=”;PHI
110 PRINT “TIME DIFFERENCE = STANDARD TIME – GMT or UT”
120 INPUT “TIME DIFFERENCE ; WEST : negative (in HOURS) =”;TD
130 PRINT #1,” PRAYER TIME TABLE FOR “;CITY$ : PRINT #1,” “:PRINT #1,” ”
140 LAMD = LAMD/360 * 24
150 PHI = PHI*RAD
160 DATA “JANUARY”,31,”FEBRUARY”,28,”MARCH”,31,”APRIL”,30,”MAY”,31
170 DATA “JUNE”,30,”JULY”,31,”AUGUST”,31,”SEPTEMBER”,30
180 DATA “OCTOBER”,31,”NOVEMBER”,30,”DECEMBER”,31
190 N0 = 0
200 FOR MN = 1 TO 12
210 READ MONTH$,D
220 PRINT #1,” “,MONTH$
230 PRINT #1,” ”
240 PRINT #1,”DATE FAJR SUNRISE ZUHR ASR MAGHRIB ISHA”
250 FOR K = 1 TO D
260 N = N0 + K
270 A = 6
280 Z = 108*RAD : GOSUB 530
290 IF ABS(X) > 1 THEN GOTO 310
300 T(1) = ST
310 Z = (90+5/6)*RAD : GOSUB 530
320 T(2) = ST
330 A = 18
340 Z = (90+5/6)*RAD : GOSUB 530
350 SUNSET = ST : T(5) = ST + 2/60
360 Z = 108*RAD : GOSUB 530
370 IF ABS(X) > 1 THEN GOTO 390
380 T(6) = ST
390 MIDDAY = (T(2) + SUNSET)/2 : T(3) = MIDDAY + 2/60
400 T(4) = (T(3) + T(5))/2
410 PRINT #1,USING “##”;K; : PRINT #1,” “;
420 FOR I= 1 TO 6
430 TH = INT(T(I)) : TM = INT((T(I)-TH)*60)
440 PRINT #1,USING “##”;TH; : PRINT #1,”:”;
450 PRINT #1,USING “##”;TM; : PRINT #1,” “;
460 NEXT I : PRINT #1,” ”
470 NEXT K : N0 = N
480 PRINT #1,” “:PRINT #1,” ” : PRINT:PRINT
490 NEXT MN
500 CLOSE
520 END
530 T = N + (A – LAMD)/24
540 M = (.9856*T – 3.289)*RAD
550 L = M + 1.916*RAD*SIN(M) + .02*RAD*SIN(2*M) + 282.634*RAD
560 LH = L/3.14159*12 : QL = INT(LH/6)+1
570 IF INT(QL/2)*2-QL<>0 THEN QL=QL-1
580 RA = ATN(.91746*TAN(L))/3.14159*12
590 RA = RA + QL*6
600 SIND = .39782*SIN(L)
610 COSD = SQR(1-SIND*SIND)
620 X = (COS(Z) – SIND*SIN(PHI))/(COSD*COS(PHI))
630 IF ABS(X) > 1 THEN GOTO 720
640 ATNX = ATN(SQR(1-X*X)/X)/RAD
650 IF ATNX < 0 THEN ATNX = ATNX + 180
660 H = (360 – ATNX)*24/360
670 IF A = 18 THEN H = 24 – H
680 TLOC = H + RA – .06571*T – 6.622
690 TLOC = TLOC + 24
700 TLOC = TLOC – INT(TLOC/24)*24
710 ST = TLOC – LAMD + TD
720 RETURN

Setelah saya pulang ke LAPAN Bandung 1994, saya buat modifikasi menyesuaikan dengan kriteria Depag RI. Ini versi jadwal shalat harian selama 1 tahun:

10  ‘JADWAL SALAT SELURUH DUNIA ANTARA LINTANG 65 S – 65 U
20  ‘OLEH T.DJAMALUDDIN (LAPAN BANDUNG)
30  ‘MENGIKUTI KRITERIA DEPAG RI
40  ‘*********************************************
50  INPUT “NAMA FILE, e.g. D:SALAT.JAD”; FILE$
60  OPEN FILE$ FOR OUTPUT AS #1
70  RAD = 3.14159 / 180
80  INPUT “NAMA KOTA                             =”; CITY$
90  INPUT “BUJUR ;  BB:-, BT:+ (DERAJAT)         =”; LAMD
100 INPUT “LINTANG; LS:-, LU:+ (DERAJAT)         =”; PHI
110 PRINT “BEDA WAKTU= WAKTU STANDAR – GMT, e.g. WIB:7 ”
120 INPUT “BEDA WAKTU; BB:-, BT:+ (JAM)          =”; TD
130 PRINT #1, ”       JADWAL SALAT “; CITY$: PRINT #1, ” “: PRINT #1, ” ”
140 LAMD = LAMD / 360 * 24
150 PHI = PHI * RAD
160 DATA “JANUARI”,31,”FEBRUARI”,28,”MARET”,31,”APRIL”,30,”MEI”,31
170 DATA “JUNI”,30,”JULI”,31,”AGUSTUS”,31,”SEPTEMBER”,30
180 DATA “OKTOBER”,31,”NOVEMBER”,30,”DESEMBER”,31
190 N0 = 0
200 FOR MN = 1 TO 12
210   READ MONTH$, D
220   PRINT #1, ”            “, MONTH$
230   PRINT #1, ” ”
240   PRINT #1, “TGL SHUBUH  TERBIT  DHUHUR  ASHAR  MAGHRIB  ISYA”
250   FOR K = 1 TO D
260     N = N0 + K
270     A = 6
280     Z = 110 * RAD: GOSUB 540
290     IF ABS(X) > 1 THEN GOTO 310
300     T(1) = ST
310     Z = (90 + 5 / 6) * RAD: GOSUB 540
320     T(2) = ST
330     A = 18
340     Z = (90 + 5 / 6) * RAD: GOSUB 540
350     SUNSET = ST: T(5) = ST + 2 / 60
360     Z = 108 * RAD: GOSUB 540
370     IF ABS(X) > 1 THEN GOTO 390
380     T(6) = ST
390     A = 12: GOSUB 540
400     MIDDAY = ST: T(3) = MIDDAY + 2 / 60
410     ZD = ABS(DEK – PHI): A = 15: GOSUB 540: T(4) = ST
420     PRINT USING “###”; N: PRINT #1, USING “##”; K; : PRINT #1, ”  “;
430     FOR I = 1 TO 6
440       TH = INT(T(I)): TM = INT((T(I) – TH) * 60)
450       PRINT #1, USING “##”; TH; : PRINT #1, “:”;
460       PRINT #1, USING “##”; TM; : PRINT #1, ”   “;
470     NEXT I: PRINT #1, ” ”
480   NEXT K: N0 = N
490   PRINT #1, ” “: PRINT #1, ” ”
500 NEXT MN
510 CLOSE
520 SYSTEM
530 END
540   T = N + (A – LAMD) / 24
550   M = (.9856 * T – 3.289) * RAD
560   L = M + 1.916 * RAD * SIN(M) + .02 * RAD * SIN(2 * M) + 282.634 * RAD
570   LH = L / 3.14159 * 12: QL = INT(LH / 6) + 1
580   IF INT(QL / 2) * 2 – QL <> 0 THEN QL = QL – 1
590   RA = ATN(.91746 * TAN(L)) / 3.14159 * 12
600   RA = RA + QL * 6
610   SIND = .39782 * SIN(L)
620   COSD = SQR(1 – SIND * SIND)
630   DEK = ATN(SIND / COSD)
640   IF A = 15 THEN Z = ATN(TAN(ZD) + 1)
650   X = (COS(Z) – SIND * SIN(PHI)) / (COSD * COS(PHI))
660   IF ABS(X) > 1 THEN GOTO 720
670   ATNX = ATN(SQR(1 – X * X) / X) / RAD
680   IF ATNX < 0 THEN ATNX = ATNX + 180
690   H = (360 – ATNX) * 24 / 360
700   IF A = 18 THEN H = 24 – H
710   IF A = 12 THEN H = 0
720   IF A = 15 THEN H = 24 – H
730   TLOC = H + RA – .06571 * T – 6.622
740   TLOC = TLOC + 24
750   TLOC = TLOC – INT(TLOC / 24) * 24
760   ST = TLOC – LAMD + TD
770   RETURN

===================================================================

Aplikasi berbasis web telah dikembangkan oleh Murdjoko (Indonesia SciTech Academy) dengan beberapa modifikasi (antara lain penambahan waktu dhuha).

===================================================================

14 Tanggapan

  1. Assalamu’alaikum,

    1. Di mana saya bisa mendapatkan program jadwal shalat yg sudah disesuaikan dng kriteria Depag RI ini?
    2. Saya memiliki program jadwal shalat Salaat Time. Program ini menyediakan jadwal shalat utk hampir seluruh kota di seluruh dunia. Dalam menentukan waktu shalat, program ini menyediakan 5 pilihan kriteria, yaitu Egyptian General Authority of Survey, Islamic Society of North-America (ISNA), Muslim World League, Umm Al-Qura dan University of Islamic Sciences, Karachi. Yg ingin saya tanyakan, kriteria Depag RI mengikuti kriteria yg mana? Terima kasih atas jawabannya.

    • Kriteria Depag/Kemenag adalah: waktu shubuh tinggi matahari -20 derajat, Asar bila panjang bayangan = tinggi bayangan + panjang bayangan saat dhuhur, dan Isya tinggi matahari -18 derajat. Lainnya sama. Jadi, lakukan setting (bila memungkinkan) pada program agar kreteria tersebut berlaku. Kriteria tsb sedikit berbeda dengan 5 kriteria tsb. Program executable jadwal shalat bisa diperoleh dari saya (kalau kebetulan mampir ke LAPAN Bandung bisa mengcopynya). Bisa juga mengcopy program yang sudah dibuat Depag/Kemenag (bisa ditanyakan di Kantor Kemenag di Kota/Kabupaten yang mempunyai ahli hisabnya atau ahli hisab di Fakultas Syariah terdekat).

      • Kriteria waktu shalat Ashar menurut Kemenag apakah sama dng kriteria standar (Mazhab Syafi’i, Hambali dan Maliki)? Krn dlm program tersebut kriteria waktu Ashar tdk dpt diutak-atik, hanya dapat memilih apakah memakai kriteria standar atau kriteria Mazhab Hanafi.

      • Kriteria standar berarti panjang bayangan = tinggi benda. Kriteria Hanafi, panjang bayangan = 2 kali panjang benda. Kruteria Kemenag mendekatai kriteria standar, hanya ada penambahan panjang bayangan waktu dhuhur. Hasilnya beda beberapa menit.

  2. alhamdulillaah, sebelumnya saya sampaikan terima kasih atas program jadwal sholat yg sangat bermanfaat ini. ada beberapa hal yang ingin saya tanyakan :
    1. bagaimana cara menghitung jadwal sholat tanggal 29 Februari?
    2. apakah jadwal tsb berlaku utk selamanya? apa tidak ada variabel utk tahun tertentu?
    3. setelah saya bandingkan dengan program winhisab 2.0 yg dikeluarkan oleh badan hisab & rukyat depag, ternyata ada perbedaan waktu. apakah memang sistem perhitungan program ini dengan winhisab berbeda ?

    • 1. Karena 29 Feb hanya terjadi setiap 4 tahun, maka pada program tersebut tidak tercantum tanggal 29 Feb. Untuk mendapatkan jadwal tanggal 29, dapat dilakukan interpolasi dari tanggal 28 Feb dan 1 Maret.
      2. Pergerakan matahari tidak terlalu bervarasi jadi jadwal tsb berlaku untuk selamanya. Variasi tahunan biasanya kurang dari 2 menit, jadi dapat diabaikan karena dalam prakteknya persiapan shalat lebih dari 2 menit.
      3. Dengan WinHisab dari kementerian Agama kriterianya sudah sama. Perbedaan kemungkinan bersumber dari pengambilan ‘ikhtiayat” (kehati-hatian) untuk waktu-waktu tertentu dan masalah pembulatan dalam komputasinya. Namun secara umum, perbedaannya umumnya dalam rentang kurang dari 2 menit.

  3. […] Artikel program jadwal shalat di blog Pak Thomas Djamaluddin Share this:FacebookTwitterLinkedInLike this:SukaBe the first to like this post. Categories: Antariksa, Dunia Islam, Pemrograman, Penelitian Tag:Bumi, Matahari, program komputer, waktu shalat Komentar (0) Lacak Balik (0) Tinggalkan komentar Lacak balik […]

  4. […] matahari telah dapat diformulasikan dalam algoritma sederhana dengan kecermatan plus-minus 2 menit untuk daerah lintang antara 65 derajat LU dan 65 derajat LS. […]

  5. Saya coba terjemahkan programnya ke bahasa Python : https://gist.github.com/altilunium/37b4462e3c18d45c63537c7a2dcad72f

    • Terima kasih. Yang sudah diterjemahkan, program awal yang belum menggunakan kriteria Kemenag. Itu sebabnya waktu shubuhnya berbeda sekitar 7 menit, karena kriteria pada program pertama z = 108, sedangkan kriteria Kemenag z = 110. Program dengan kriteria Kemenag ada di program ke-2.

  6. Assalamu’alaikum. Saya ingin bertanya.
    Bagaimana cara kerja rumus yang ada pada baris 530 hingga 720 pada program pertama? Saya ingin mengetahui cara kerja program ini dari segi matematika dan astronominya. Terima kasih.

    • Baris 530 – 720 adalah modifikasi algoritma posisi matahari yang saya ambil dari “Astronomical Almanac for Computer” yang terbit 1990-an.

Tinggalkan komentar