Rukyat dan Hisab Untuk Menentukan Awal Bulan Ramadan dan Hari Raya Idul Fitri

Umat Islam menggunakan dua metode untuk menentukan awal bulan untuk keperluan ibadah, yaitu rukyat (pengamatan hilal) dan hisab (perhitungan hilal). Kedua metoda ini dilakukan misalnya untuk menentukan awal bulan Ramadan dan Hari Raya Idul Fitri.

Umat Bumi datar bersikeras awal bulan Islam hanya dapat ditentukan melalui pengamatan. Mereka salah. Kami membuat script Python sangat sederhana sebagai contoh melakukan hisab untuk menentukan awal bulan kalender Hijriyah selama abad ke-21.

Dalam menentukan awal bulan Hijriyah, Kementerian Agama Republik Indonesia menggunakan metode rukyat, dengan hisab sebagai alat bantu. Jika hilal (bulan sabit tipis) terlihat setelah Matahari terbenam, maka ditetapkanlah hari itu sebagai awal bulan.

Sedangkan lembaga Muhammadiyah menggunakan metode hisab, yaitu dengan melakukan perhitungan. Jika berdasarkan perhitungan, posisi bulan di atas horizon saat Matahari terbenam, maka ditentukanlah hari itu sebagai awal bulan.

Perbedaan cara ini kadang mengakibatkan perbedaan awal bulan antara pemerintah dan Muhammadiyah. Semakin dekat posisi hilal ke horizon saat Matahari terbenam, maka semakin sulit untuk diamati. Bisa saja bulan sabit sudah ada di atas horizon, tetapi karena terlalu tipis dan terlalu dekat dengan Matahari menjadikannya tak dapat diamati.

Umat Bumi datar tak dapat melakukan hisab, karena Bumi memang tidak datar. Karena itu beberapa dari mereka mengklaim tak mungkin melakukan hisab awal bulan, dan penentuan awal bulan hanya dapat dilakukan dengan rukyat. Mereka salah. Lembaga Muhammadiyah menentukan awal bulan melalui hisab. Untuk demonstrasi hisab sederhana, kami buatkan script Python sederhana untuk melakukan hisab awal bulan pada abad ke-21.

Source Code

Script dibuat sesederhana mungkin untuk keperluan edukasi. Untuk keperluan ibadah, masih perlu dikembangkan lebih lanjut.

Script menentukan awal bulan dengan cara mencari sudut Bulan saat Matahari terbenam. Jika hari kemarin Bulan di bawah horizon dan hari ini di atas horizon, maka terjadi bulan baru.

Jika sudutnya di atas 2°, maka diasumsikan rukyat juga akan menghasilkan hal yang sama. Jika antara 0°-2°, maka dianggap ada kemungkinan perbedaan antara metoda hisab dan rukyat.

Script menggunakan penurunan horizon 0°. Jadi hanya berlaku dekat permukaan laut. Seharusnya penurunan horizon perlu dihitung berdasarkan ketinggian pengamat.

Script hanya menghitung untuk kota Jakarta. Seharusnya dilakukan perhitungan pada seluruh kota yang ada di Indonesia.

#!/usr/bin/env python
'''
Script untuk menghitung hisab awal bulan.

Algoritma: jika ketika Matahari terbenam, bulan di atas
horizon & kemarin di bawah horizon, maka terjadi bulan baru.
Seharusnya sudah mengakomodasi algoritma Muhammadiyah.

Script memperhitungkan situasi jika ada kemungkinan rukyat
tidak berhasil mengamati hilal, yaitu jika ketinggian bulan
di bawah 2° saat matahari terbenam.

Script hanya menghitung untuk lokasi Jakarta. Untuk
penentuan bulan baru, seharusnya dilakukan untuk lokasi
lain di Indonesia.
'''
import ephem
from datetime import date, timedelta

sekarang = date(2000, 1, 1)
selesai = date(2100, 12, 1)

bulan = ephem.Moon()
matahari = ephem.Sun()

pengamat = ephem.Observer()
pengamat.lon = '106.816667'
pengamat.lat = '-6.2'
pengamat.elevation = 8

ketinggiankemarin = 0

while sekarang <= selesai:
    pengamat.date = sekarang
    terbenam = pengamat.next_setting(matahari)
    pengamat.date = terbenam
    bulan.compute(pengamat)

    ketinggian = float(bulan.alt) / 0.01745329252

    if ketinggian > 0 and ketinggiankemarin <= 0:
        if ketinggian > 2:
            print(sekarang, "Bulan baru.", ketinggian)
        else:
            print(sekarang, "Muhammadiyah bulan baru, pemerintah tergantung rukyat.", ketinggian)

    ketinggiankemarin = ketinggian
    sekarang += timedelta(days = 1)

Contoh output dapat dilihat di: hisab-output.txt.

Selengkapnya dapat dilihat di repository GitHub: bumidatarid/hisab-awal-bulan.

Referensi