2016-10-07 1 views
1

Quelque chose ne fonctionne pas correctement avec le code suivant et je deviens fou à essayer de comprendre pourquoi il ne calcule pas correctement:PHP le calcul des heures

$hours = date('H:i' , strtotime('03:00') - strtotime('02:00')); 

echo $hours; 

Résultat: 02:00

Résultat attendu: 01:00

Quelqu'un pourrait-il m'aider à deviner ce qui ne va pas?

02:00 as the result

+0

Mais lorsque vous essayez d'exécuter votre code ses émissions '01: 00 ' – Karthi

+1

@Albzi Merci pour votre réponse. Quand je n'utilise qu'un strtotime, il est calculé correctement. –

Répondre

2

Vous voulez probablement quelque chose comme ceci:

$hours = date('H:i' , strtotime('03:00 - 02:00')); 

Ou encore:

$hours = date('H:i' , strtotime('03:00 - 2 hours')); 

Ce imprimera 01:00.

https://3v4l.org/on4JH

+0

au-dessus de celui-ci travaille également – Karthi

+0

@ LifeTimeProgrammer Regardez ce lien: https://3v4l.org/EIZ4s Il montre le comportement d'OP qu'il ne veut pas. – Albzi

+0

oui j'ai levé les yeux. mais quand mon 'serveur local' fonctionne aussi bien que votre code. – Karthi

3

Vous pouvez utiliser l'objet DateTime pour l'accomplir:

$date1 = new DateTime('03:00'); 
$date2 = new DateTime('02:00'); 
$dateInterval = $date1->diff($date2); 

echo $dateInterval->format('%H:%S'); // result would be 01:00