const moment = require('moment-timezone'); const math = require('mathjs'); // Funzione per convertire i gradi in formato sessagesimale: gradi, primi e secondi function convertiGradiMinutiSecondi(totaleGradiDecimale) { const gradi = Math.floor(totaleGradiDecimale); const primiDecimale = math.round((totaleGradiDecimale - gradi) * 60 * 100) / 100; const primi = Math.floor(primiDecimale); const secondiDecimale = (primiDecimale - primi) * 60; const secondi = Math.floor(secondiDecimale); // Creo la stringa con gradi, primi e secondi const gradiGMS = `${gradi}° ${primi}' ${secondi}"`; return gradiGMS; } // Creo un oggetto datetime e lo inizializzo con l'ora di sistema locale let nowGMT = moment(); let nowRM= moment(); let localNowGMT = nowGMT.tz('Etc/UTC'); // Utilizziamo Etc/UTC per Greenwich let localNowRM = nowRM.tz('Europe/Rome'); // Utilizziamo Europe/Rome per Roma // Estraggo data e ora let oraGMT = localNowGMT.format('YYYY-MM-DD HH:mm:ss'); let oraRM = localNowRM.format('YYYY-MM-DD HH:mm:ss'); // Calcolo la differenza di fuso orario tra Roma e Greenwich let fusoOrario = (localNowRM.utcOffset() - localNowGMT.utcOffset()) / 60; // Calcolo il totale dei secondi let oreGMT = localNowGMT.hour(); let minutiGMT = localNowGMT.minute(); let secondiGMT = localNowGMT.second(); let totaleSecondi = (((oreGMT * 60) + minutiGMT) * 60) + secondiGMT; let angoloRotazioneSecondo = 15 / 60 / 60; let totaleGradiDecimale = math.round((angoloRotazioneSecondo * totaleSecondi) * 100) / 100; // Converto i gradi espressi in decimale in gradi espressi in sessagesimale let gradiGMS = convertiGradiMinutiSecondi(totaleGradiDecimale); // Calcolo la percentuale di rotazione corrente della Terra rispetto al giro completo let percentualeRotazioneCompleta = math.round((totaleGradiDecimale / 360) * 100 * 100) / 100; // Calcolo la percentuale di rotazione della Terra che manca per completare un giro let percentualeRotazioneMancante = math.round((100 - percentualeRotazioneCompleta) * 100) / 100; // Stampa delle informazioni richieste console.log("----- Informazioni sulla rotazione della Terra -----"); console.log(`Data e ora di Greenwich (UTC): ${oraGMT}`); console.log(`Data e ora di Roma: ${oraRM}`); console.log(`Differenza di fuso orario tra Roma e Greenwich: ${fusoOrario} ore`); console.log(`Rotazione corrente della Terra: ${gradiGMS}`); console.log(`Percentuale di rotazione della Terra per completare un giro completo: ${percentualeRotazioneCompleta}%`); console.log(`Percentuale di rotazione della Terra che manca per completare un giro: ${percentualeRotazioneMancante}%`);