Differenza e somme di ore in php
Posted by Santarelli Luca | Filed under Programmazione Web

Molto spesso gestire il tempo in php può risultare un operazione non tanto banale, sopratutto se stiamo parlando di differenze tra orari o somma di ore.
Per questo ho creato una funzione ad-hoc che permette di ricavare, date 2 ore in formato timestamp del tipo 00:00, il numero di ore che intercorrono dall’ora di inizio a quella di fine:
Â
Â
Â
Â
Function diff_ore($start, $end) {
$part = explode(”:”, $start);
$arr = explode(”:”, $end);
$diff = mktime($arr[0], $arr[1], 0,1,1,2004) – mktime($part[0], $part[1],0,1,1,2004);
$ore=floor($diff / (60*60)); Â
$minuti=($diff / 60) % 60;$ore    = str_pad($ore,2,0,STR_PAD_LEFT);
$minuti = str_pad($minuti,2,0,STR_PAD_LEFT);$tempo = $ore.”:”.$minuti;
return $tempo;
}
Accostata a questa funzione possiamo aggiungerne un altra che permette la somma. Potete dire, basta che faccio la somma degli mktime ricavati con l’explode, ma non è cosi, provate, ed otterrete un risultato assai lontano dalla realtà , per questo molto spesso mi appoggio ad un altra funzione che mi permette con pochi passi di avere la somma tra due ore.
Â
function somma_ore($ora1,$ora0){
$ora0 = explode(”:”,$ora0);
$ora1 = explode(”:”,$ora1);
$ore    = $ora1[0] + $ora0[0];
$minuti = $ora1[1] + $ora0[1];if ($minuti > 59) { $minuti = $minuti – 60; $ore +=1; }
$ore    = str_pad($ore,2,0,STR_PAD_LEFT);
$minuti = str_pad($minuti,2,0,STR_PAD_LEFT);return “$ore:$minuti”;
}
E’ abbastanza spartana come funzione, ma io mi ci trovo più che bene, buon lavoro a tutti
Â
No related posts.
Articoli correlati elaborati dal plugin Yet Another Related Posts.
Tags: PHP, Programmare
Scritto da Santarelli Luca giovedì, 3rd settembre , 2009 17:31 Letture:« JAVA e XML come usare le JAXP API | Come Creare una Linux Live Slax su penna usb »
3 Responses to “Differenza e somme di ore in php”
-
andry Says:
settembre 4th, 2009 at 23:42Perche’ complicarsi cosi’ tanto la vita? Ormai tutti gli hosting hanno il php5. Basta utilizzare la funzione apposita che e’ gia’ fatta: http://www.php.net/manual/en/datetime.diff.php
-
andry Says:
settembre 4th, 2009 at 23:42Dimenticavo… anche x la somma delle ore: http://www.php.net/manual/en/datetime.add.php
-
admin Says:
settembre 5th, 2009 at 00:25questa la usavo su php4, grazie bella dritta ancora mi ricapitava
blogflux