Created
May 4, 2019 05:51
-
-
Save priyadi/0836255e865cf5c9c6157b60f5f80a90 to your computer and use it in GitHub Desktop.
Script Perhitungan Hisab Awal Bulan Hijriah
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/usr/bin/env python | |
''' | |
Script sederhana hisab bulan baru hijriah. | |
Mungkin tidak 100% akurat. | |
Perlu pyephem (pip install ephem). | |
''' | |
import ephem | |
from datetime import datetime, timedelta | |
# waktu awal dan akhir perhitungan. | |
# ganti ini untuk menghitung pada waktu yang lain. | |
sekarang = datetime(2018, 1, 1, 5, 0, 0) | |
selesai = datetime(2022, 12, 1, 5, 0, 0) | |
# init objek bulan & matahari. | |
bulan = ephem.Moon() | |
matahari = ephem.Sun() | |
# pengamat di Jakarta. | |
pengamat = ephem.Observer() | |
pengamat.lon = '106.816667' | |
pengamat.lat = '-6.2' | |
pengamat.elevation = 8 | |
# loop setiap hari mulai dari sekarang sampai selesai. | |
ketinggiankemarin = 0 | |
while sekarang <= selesai: | |
pengamat.date = sekarang | |
# waktu matahari terbenam dari pengamat. | |
terbenam = pengamat.next_setting(matahari) | |
pengamat.date = terbenam | |
bulan.compute(pengamat) | |
# ketinggian/altitude bulan saat matahari terbenam dalam derajat. | |
ketinggian = float(bulan.alt) / 0.01745329252 | |
# jika kemarin bulan di bawah matahari DAN hari ini bulan di atas matahari, | |
# maka masuk bulan baru menurut hisab | |
if ketinggian > 0 and ketinggiankemarin <= 0: | |
# jika ketinggian bulan di atas 3°, maka harusnya hilal kelihatan melalui rukyat. | |
# sehingga baik pemerintah & muhammadiyah masuk bulan baru | |
if ketinggian > 3: | |
print("%s-%s-%s: Masuk bulan baru. Ketinggian bulan: %s°" % (sekarang.year, sekarang.month, sekarang.day, ketinggian)) | |
# jika ketinggian bulan di bawah 3°, maka bulan belum tentu terlihat melalui rukyat | |
# sehingga ada kemungkinan pemerintah baru masuk bulan baru esok hari. | |
else: | |
print("%s-%s-%s: Muhammadiyah masuk bulan baru, pemerintah tergantung rukyat. Ketinggian bulan: %s°" % (sekarang.year, sekarang.month, sekarang.day, ketinggian)) | |
# majukan parameter untuk iterasi berikutnya | |
ketinggiankemarin = ketinggian | |
sekarang += timedelta(days = 1) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment