Salve a tutti, come da oggetto devo fare la differenza tra due orari che hanno questo formato:
Codice PHP:
$inizio=2022-03-21 23.00
$fine= 2022-03-22 05.05
essendo oggetti datetime, stavo utilizzando la funzione diff di datetime:
Codice PHP:
$differenza= date_diff($fine,$inizio);
il problema � che la differenza che mi d� � 6.5 invece dovrebbe essere 6.05 ho provato anche utilizzando:
Codice PHP:
$differenza= $fine->diff($inizio);
ma il risultato � identico, � un peccato perch� � di facile utilizzo e funziona perfettamente per tutti i valori che abbiano i minuti in doppia cifra, quindi da 10 in poi. Non so se esiste un settaggio da fare, non ho trovato nulla.
Ho trovato poi quest'altra funzione che fa quello che chiedo:
Codice PHP:
$ora2=$fine->format('H:i');
$ora1=$inizio->format('H:i');
function differenzaore($ora2, $ora1){
$sep=':';
$part = explode($sep, $ora1);
$arr = explode($sep, $ora2);
$diff= mktime($arr[0], $arr[1]) - mktime($part[0], $part[1]);
$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);
$risultato = $ore.":".$minuti;
return $risultato;
}
Anche questa funziona perfettamente, ma non per tutti i casi, per orari dello stesso giorno � perfetta, ma per orari che si trovano a cavallo dei due giorni (come da esempio), il calcolo non viene eseguito bene.
Qualcuno sa come risolvere il problema con uno dei metodi visti sopra? Grazie.