Berikut adalah script kode yang digunakan:
/**
* Fungsi untuk mendapatkan Pasaran Jawa berdasarkan tanggal Gregorian.
* Menggunakan perhitungan Julian Day Number (JDN) yang stabil.
* @param {Date} dateObj Objek Date Gregorian.
* @returns {string} Nama Pasaran Jawa.
*/
function getPasaranJawa(dateObj) {
const pasaranJawa = ['Kliwon', 'Legi', 'Pahing', 'Pon', 'Wage'];
const julianDay = (dateObj.getTime() / 86400000) + 2440587.5;
const pasaranIndex = Math.floor((julianDay + 2) % 5);
return pasaranJawa[pasaranIndex];
}
/**
* Fungsi untuk mengonversi tanggal Gregorian ke Hijriah secara independen.
*/
function convertGregorianToHijri(dateObj) {
let yearG = dateObj.getFullYear();
let monthG = dateObj.getMonth() + 1;
let dayG = dateObj.getDate();
// Calculate Julian Day Number (JDN)
let JDN = Math.floor((1461 * (yearG + 4800 + Math.floor((monthG - 14) / 12))) / 4) +
Math.floor((367 * (monthG - 2 - 12 * Math.floor((monthG - 14) / 12))) / 12) -
Math.floor((3 * Math.floor((yearG + 4900 + Math.floor((monthG - 14) / 12)) / 100)) / 4) +
dayG - 32075;
const numericFormatter = new Intl.DateTimeFormat('en-u-ca-islamic-civil', {
year: 'numeric', month: 'numeric', day: 'numeric'
});
const numericParts = numericFormatter.formatToParts(dateObj);
let numDay, numMonth, numYear;
numericParts.forEach(part => {
if (part.type === 'day') numDay = parseInt(part.value);
if (part.type === 'month') numMonth = parseInt(part.value);
if (part.type === 'year') numYear = parseInt(part.value.split(' ')[0]);
});
return { day: numDay, month: numMonth, year: numYear };
}
// Panggil fungsi saat DOM dimuat
document.addEventListener('DOMContentLoaded', function() {
displayCurrentDate();
setInterval(displayCurrentDate, 1000);
});
by faridmub