Moon Phase Calculator
Hitung fase bulan saat ini, persentase iluminasi, dan informasi siklus lunar untuk tanggal apa pun.
Tentang alat ini
Kalkulator Fase Bulan membantu Anda menemukan fase bulan saat ini, persentase pencahayaan, dan informasi detail siklus lunar untuk tanggal apa pun—masa lalu, sekarang, atau masa depan. Memahami penampilan dan posisi bulan dalam siklus 29,5 harinya sangat berharga bagi penggemar astronomi, petani yang mengikuti kalender lunar, fotografer yang merencanakan pemotretan malam, dan siapa pun yang penasaran tentang perilaku satelit alami kita.
Cukup masukkan tanggal apa pun menggunakan pemilih kalender, dan alat ini langsung menampilkan nama fase bulan, berapa banyak cakram bulan yang terang benderang, jumlah hari dalam siklus saat ini, dan tanggal bulan purnama atau bulan baru berikutnya. Anda dapat menjelajahi penampilan bulan pada hari ulang tahun Anda, memeriksa kondisi acara astronomi mendatang, atau melacak bagaimana siklus lunar memengaruhi kegiatan seperti penanaman atau penangkapan ikan.
Kalkulator ini menggunakan algoritma astronomi untuk menghitung posisi bulan dengan akurasi tinggi, membuatnya dapat diandalkan untuk proyek pendidikan, perencanaan kreatif, dan pengamatan bintang santai. Ingat bahwa persentase pencahayaan bersifat perkiraan; visibilitas sebenarnya tergantung pada lokasi Anda, cuaca lokal, dan waktu malam.
Pertanyaan yang Sering Diajukan
Implementasi Kode
import math
from datetime import date, datetime
def calculate_moon_phase(year: int, month: int, day: int) -> dict:
"""
Calculate moon phase using the Conway algorithm.
Returns phase name, illumination percentage, and age in days.
"""
# Julian date calculation
if month <= 2:
year -= 1
month += 12
A = int(year / 100)
B = 2 - A + int(A / 4)
julian = int(365.25 * (year + 4716)) + int(30.6001 * (month + 1)) + day + B - 1524.5
# Days since known new moon (Jan 6, 2000)
known_new_moon = 2451549.5
lunation = 29.53058868
age = (julian - known_new_moon) % lunation
illumination = (1 - math.cos(2 * math.pi * age / lunation)) / 2
# Phase name
phases = [
(0.03, "New Moon"), (0.22, "Waxing Crescent"), (0.28, "First Quarter"),
(0.47, "Waxing Gibbous"), (0.53, "Full Moon"), (0.72, "Waning Gibbous"),
(0.78, "Last Quarter"), (0.97, "Waning Crescent"), (1.00, "New Moon")
]
fraction = age / lunation
phase_name = next(name for threshold, name in phases if fraction <= threshold)
return {
"age_days": round(age, 2),
"illumination_pct": round(illumination * 100, 1),
"phase": phase_name,
"fraction": round(fraction, 4)
}
result = calculate_moon_phase(2024, 1, 15)
print(f"Phase: {result['phase']}")
print(f"Age: {result['age_days']} days")
print(f"Illumination: {result['illumination_pct']}%")Comments & Feedback
Comments are powered by Giscus. Sign in with GitHub to leave a comment.