Differenza e somme di ore in php

time-warp

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

 

pdf

No related posts.

Articoli correlati elaborati dal plugin Yet Another Related Posts.

Tags: ,

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”

    1. andry Says:
      settembre 4th, 2009 at 23:42

      Perche’ 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

    2. andry Says:
      settembre 4th, 2009 at 23:42

      Dimenticavo… anche x la somma delle ore: http://www.php.net/manual/en/datetime.add.php

    3. admin Says:
      settembre 5th, 2009 at 00:25

      questa la usavo su php4, grazie bella dritta ancora mi ricapitava

    Leave a Reply