Source Code Gerhana Bulan

Tanggal 29 Oktober 2023 kemarin telah terjadi gerhana bulan sebagian, kita telah mengetahui datanya, kapan mulai, kapan puncak dan kapan gerhana berakhir.

Kita dapat menghitung waktu terjadinya gerhana bulan menggunakan library astronomy.browser.js dengan mudah sehingga dapat ditampilkan secara online. Skrip kode programnya sebagai berikut:

<!DOCTYPE html>
<html>
<head>
<title>Lunar Eclipse Finder</title>
</head>
<body>
<h1>Lunar Eclipse Finder</h1>
<div>
<label for=”yearInput”>Tahun Gerhana:</label>
<input type=”number” id=”yearInput”>
<button onclick=”CariGerhana()”>Cari</button>
</div>
<div id=”output”></div>

<script src=”https://falakmu.id/astronomy.browser.js”></script>

<script>
function Pad(s, w) {
s = s.toFixed(0);
while (s.length < w) {
s = ‘0’ + s;
}
return s;
}

function FormatDate(t) {
const wibOffset = 7 * 60 * 60 * 1000; // Offset WIB dalam milidetik (7 jam)
const wibDate = new Date(t.date.getTime() + wibOffset);

var year = Pad(wibDate.getUTCFullYear(), 4);
var month = Pad(1 + wibDate.getUTCMonth(), 2);
var day = Pad(wibDate.getUTCDate(), 2);
var hour = Pad(wibDate.getUTCHours(), 2);
var minute = Pad(wibDate.getUTCMinutes(), 2);
var second = Pad(wibDate.getUTCSeconds(), 2);

return `${year}-${month}-${day} ${hour}:${minute}:${second} WIB`;
}

function PrintEclipse(e) {
const MINUTES_PER_DAY = 24 * 60;
const output = document.getElementById(‘output’);

const p1 = e.peak.AddDays(-e.sd_partial / MINUTES_PER_DAY);
output.innerHTML += `${FormatDate(p1)} – Gerhana parsial mulai.<br>`;

if (e.sd_total > 0) {
const t1 = e.peak.AddDays(-e.sd_total / MINUTES_PER_DAY);
output.innerHTML += `${FormatDate(t1)} – Gerhana total mulai.<br>`;
}

output.innerHTML += `${FormatDate(e.peak)} – Puncak gerhana ${e.kind}.<br>`;

if (e.sd_total > 0) {
const t2 = e.peak.AddDays(+e.sd_total / MINUTES_PER_DAY);
output.innerHTML += `${FormatDate(t2)} – Gerhana total berakhir.<br>`;
}

const p2 = e.peak.AddDays(+e.sd_partial / MINUTES_PER_DAY);
output.innerHTML += `${FormatDate(p2)} – Gerhana parsial berakhir.<br><br/>`;
}

function ParseDate(text) {
const d = new Date(text);
if (!Number.isFinite(d.getTime())) {
document.getElementById(‘output’).innerHTML += `ERROR: Not a valid date: “${text}”<br>`;
return null;
}
return d;
}

function CariGerhana() {
const yearInput = document.getElementById(‘yearInput’).value;
const date = new Date(`${yearInput}-01-01T00:00:00Z`);
if (!Number.isNaN(date.getTime())) {
let count = 0;
let eclipse = Astronomy.SearchLunarEclipse(date);
const output = document.getElementById(‘output’);
output.innerHTML = ”; // Bersihkan output sebelum menampilkan hasil baru
for (;;) {
if (eclipse.kind !== Astronomy.EclipseKind.Penumbral) {
PrintEclipse(eclipse);
if (++count === 10) {
break;
}
}
eclipse = Astronomy.NextLunarEclipse(eclipse.peak);
}
} else {
document.getElementById(‘output’).innerHTML = `ERROR: Tahun tidak valid: “${yearInput}”<br>`;
}
}
</script>
</body>
</html>

 

Output kode program di ata dapat dilihat di link: https://falakmu.id/gerhana/

Leave a Reply

Your email address will not be published. Required fields are marked *