Memuat data...

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