2012-05-22 5 views
4

Possible en double:
How to calculate the difference between two dates using PHP?Obtenez Différence de temps entre deux dates en utilisant php

Ici je mentionne deux fois avec sa date

2008-12-13 10 : 42: 00

2010-10-20 08:10:00

Je veux obtenir la différence totale de temps (h: m: s) Format

+0

Voir cette question: http://stackoverflow.com/questions/ 676824/comment-calculer-la-différence-entre-deux-dates-using-php – Tarion

+2

Vérifiez simplement la question @tarion linked, et utilisez la réponse la plus votée (pas la acceptée), en utilisant le diff de Datetime: http: // www.php.net/manual/fr/datetime.diff.php – Nanne

+1

-1. Si vous google "différence de php entre deux dates" la duplication exacte que Tarion lié est le premier résultat. – Corbin

Répondre

3

Vous pouvez utiliser le la strtotime function pour mettre le temps en entiers et les soustraire.

$time1 = strtotime("2008-12-13 10:42:00"); 
$time2 = strtotime("2010-10-20 08:10:00"); 

$diff = $time2-$time1; 
// the difference in int. then you can divide by 60,60,24 and 
// so on to get the h:m:s out of it 
+0

Merci à tous pour votre rediffusion précieux – meginjoy

21

Si vous utilisez ou en mesure d'utiliser PHP 5.3.x ou version ultérieure, vous pouvez utiliser la fonctionnalité de l'objet DateTime:

$date_a = new DateTime('2010-10-20 08:10:00'); 
$date_b = new DateTime('2008-12-13 10:42:00'); 

$interval = date_diff($date_a,$date_b); 

echo $interval->format('%h:%i:%s'); 

Vous pouvez jouer avec le format dans une variété de façons, et Une fois que vous avez des dates dans les objets DateTime, vous pouvez profiter de nombreuses fonctionnalités différentes, par exemple la comparaison via des opérateurs normaux. Consultez le manuel pour plus: http://us3.php.net/manual/en/datetime.diff.php

+0

Merci à tous pour votre rediffusion précieux – meginjoy

+1

En fait, ce qui précède est PHP 5.3.x ou plus tard –

+0

Vous avez raison, je pense que c'était une (très ancienne) faute de frappe. Mis à jour, et merci! – futureal

13

ce que im en utilisant:

$seconds = strtotime("2010-10-20 08:10:00") - strtotime("2008-12-13 10:42:00"); 

$days = floor($seconds/86400); 
$hours = floor(($seconds - ($days * 86400))/3600); 
$minutes = floor(($seconds - ($days * 86400) - ($hours * 3600))/60); 
$seconds = floor(($seconds - ($days * 86400) - ($hours * 3600) - ($minutes*60))); 

vous pouvez formater maintenant votre chemin

+0

Merci à tous pour votre rediffusion précieuse.avec l'aide des codes ci-dessus, j'ai eu la réponse $ seconds = strtotime ("2000-03-01 10:02:00") - strtotime ("2000-02-28 10:02 : 00 "); $ jours = étage ($ secondes/86400); $ heures = floor (($ secondes - ($ days * 86400))/3600); $ minutes = floor (($ secondes - ($ days * 86400) - ($ heures * 3600))/60); $ secondes = floor (($ secondes - ($ days * 86400) - ($ heures * 3600) - ($ minutes * 60))); $ ff = $ jours * 24; echo $ time = $ ff + $ heures. "heures". $ minutes. "minutes". $ secondes. "secondes"; – meginjoy

+0

"Le plancher ($ secondes/86400);" échouera aux dates "d'été" à moins que le temps ne soit spécifiquement ajouté à la date. Sinon, il sera 1 heure de repos et de trouver le montant des dates sera un jour trop peu (en raison d'être 1 heure à court). Utilisez DateTime et date_diff à la place –

Questions connexes