Salve a tutti, come da oggetto devo fare la differenza tra due orari che hanno questo formato:
essendo oggetti datetime, stavo utilizzando la funzione diff di datetime:
il problema è che la differenza che mi dà è 6.5 invece dovrebbe essere 6.05 ho provato anche utilizzando:
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:
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.
PHP:
$inizio=2022-03-21 23.00
$fine= 2022-03-22 05.05
essendo oggetti datetime, stavo utilizzando la funzione diff di datetime:
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:
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:
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.