Torna agli scripts <<< BACK

/*########################################################################################################################################### # Calculation Time # Copyright (c)2009 Andrea Mirabella # postmaster[at]andreamirabella.it # http://www.andreamirabella.it/scripts.php?p=2 # License: LGPL # Descrizione : Funzione per il calcolo della differenza tra 2 orari, passati come numeri reali (hh.mm). # Description : Function to calculate time difference between two different hours, given as real numbers (hh.mm). ############################################################################################################################################*/ //################################# Prima di eseguire il calcolo controllare che il formato ora sia corretto ########################################### function controlla_char(field) { var stringa = document.getElementById(field).value; var myregexp = /^(([0-1]?[0-9])|([2][0-4]))\.([0-5]?[0-9])(\.([0-5]?[0-9]))?$/; // controllo dell ora if (myregexp.test(stringa) == false) { return false; } else { return true; } } //######################################################################################################################################################## function calcolo_ora() { oI = document.getElementById('op').value; // Ora inizio inserita nella text-field op oF = document.getElementById('oa').value; // Ora fine inserita nella text-field oa if ( oI < oF ) { // Controlliamo che le ore iniziali siano precedenti a quelel finali altrimenti entrimo nell' else in fondo oraI = Math.floor(oI); // Recuperiamo la parte intera dell'ora iniziale oraF = Math.floor(oF); // Recuperiamo la parte intera dell'ora finale minI_1 = (oI - Math.floor(oI))*100; // Ricaviamo i minuti dell'ora iniziale dal numero decimale sottraendo al numero la sua parte intera e moltiplicandola per 100 (es. ore 21.15 : (21.15 - 21)*100 = 15 minuti ) minF_1 = (oF - Math.floor(oF))*100; minI = Math.round(minI_1); // Eliminiamo eventuali cifre decimali rimanenti dalla formula per il calcolo dei minuti. minF = Math.round(minF_1); diff_ora = oraF - oraI; // Calcoliamo la differenza tra le ore. diff_min = minF - minI; // Calcoliamo la differenza tra i minuti. if (diff_min < 0) { // Se la differenza tra i minuti è minore di zero, sottraiamo 1 dalla differenza delle ore e facciamo il complemento a 60 della differenza ( aggiungendo semplicemente 60 al risultato negativo). diff_ora--; diff_min = diff_min + 60; } if (diff_min <= 9) { // Se la differenza tra i minuti è minore = a 9 aggiungiamo uno 0 per una corretta visualizzazione es. 15.36 - 16.38 = 1.2 h -> aggiungiamo lo zero in modo che diventi 1.02 h document.getElementById('otot').style.color='black'; document.getElementById('otot').style.borderColor='white'; document.getElementById('otot').value = (diff_ora + '.0' + diff_min); //Scriviamo il nostro risultato finale nella text-field otot } else { // in tutti gli altri casi non aggiungiamo nulla perche la differenza tra i minuti è a 2 cifre. document.getElementById('otot').style.color='black'; document.getElementById('otot').style.borderColor='white'; document.getElementById('otot').value = (diff_ora + '.' + diff_min); //Scriviamo il nostro risultato finale nella text-field otot } } else { //Se gli orari non coincidono visualizziamo un messaggio di errore tramite pop-up e scriviamo Err nella text-field otot alert('ATTENZIONE!!! Gli orari non coincidono') document.getElementById('otot').value = 'Err'; return false; } }