Advanced time function

De Wiki Let's Role
function heure(tz) {
    // Date de référence (que TU connais)
    var base_annee = 2025;
    var base_mois = 1;   // Janvier
    var base_jour = 1;   // 1er janvier
    var base_jSemaine = 3; // 0=Lundi → 3=Jeudi (2025-01-01)
    var moisLong = [31,28,31,30,31,30,31,31,30,31,30,31];
    var joursNom = ["Lundi","Mardi","Mercredi","Jeudi","Vendredi","Samedi","Dimanche"];
    var moisNom  = ["Janvier","Février","Mars","Avril","Mai","Juin","Juillet",
                    "Août","Septembre","Octobre","Novembre","Décembre"];
    // Epoch actuel + fuseau horaire
    var now = Math.floor(Date.now() / 1000) + tz * 3600;
    // Convertir le même jour base en epoch SECONDES (simplifié)
    var baseDate = new Date("2025-01-01");
    var baseEpoch = Math.floor(baseDate.getTime() / 1000);
    var delta = now - baseEpoch; // secondes depuis le 1 janvier 2025
    // ---- Heures, minutes, secondes ----
    var s = delta % 60;
    delta = Math.floor(delta / 60);
    var m = delta % 60;
    delta = Math.floor(delta / 60);
    var h = delta % 24;
    delta = Math.floor(delta / 24);
    // ---- Jours écoulés depuis la base ----
    var joursPasse = delta;
    // Jour de la semaine
    var jSemaine = (base_jSemaine + joursPasse) % 7;
    // ---- Calcul du jour / mois / année ----
    var annee = base_annee;
    var mois = base_mois - 1; // 0..11
    var jour = base_jour;
    // Année bissextile simple
    function estBissextile(a) {
        return (a % 4 == 0 && (a % 100 != 0 ||  a % 400 == 0));
    }
    while (joursPasse > 0) {
        var len = moisLong[mois];
        if (mois == 1 && estBissextile(annee)) {
            len = 29;
        }
        jour++;
        if (jour > len) {
            jour = 1;
            mois++;
            if (mois == 12) {
                mois = 0;
                annee++;
            }
        }
        joursPasse--;
   }
    // ---- Padding simple ----
    if (h < 10) h = "0"+h;
    if (m < 10) m = "0"+m;
    if (s < 10) s = "0"+s;
    return joursNom[jSemaine] + " " + jour + " " +
           moisNom[mois] + " " + annee + " - " +
           h + ":" + m + ":" + s;
}