[PHP] Comment calculer l’intervalle de temps entre deux dates
L’équivalent en C# c’est ici :: Calculer un intervalle de temps en C#
Pour calculer la différence de temps entre deux dates en php il suffit d’utiliser la méthode diff et deux datetime.
La méthode diff nous renverra un objet dateinterval qui est très facilement manipulable pour obtenir des durées.
!!! Attention le calcul du nombre de jour total dans PHP 5.3.0 BUG. Le format ‘%a’ vous renverra tout le temps 6015.
Exemple:
Calcul du temps écoulé (pour calculer le temps d’exécution d’un programme en seconde).
<?php $debut = new DateTime('now'); // Execution de code $fin = new DateTime('now'); $interval = $debut->diff($fin); echo $interval->format('Il s\'est écoulé %R%S sec'); //-> Il s'est écoulé +02 sec ?> |
Exemple:
Calculer le nombre de jours entre deux dates.
<?php $debut = new DateTime('2009-01-02'); // Execution de code $fin = new DateTime('2009-01-05'); $interval = $debut->diff($fin); echo $interval->format('Il s\'est écoulé %R%d jours'); //-> Il s est écoulé +3 jours ?> |
Exemple:
L’exemple suivant va vous permettre de tester si le nombre de jour est supérieur ou égal à 2 tout en gérant le bug du %a (Calcul du nombre de jour total).
if($interval->d >= 2 || $interval->m > 0 || $interval->y > 0 ){ echo ‘intervalle de temps supérieur ou égale à 2 jours’; }else{ echo ‘intervalle de temps inférieur à 2 jours’; } |
Et pour en savoir plus il y a le manuel php http://php.net/manual/fr/datetime.diff.php
Et si vous avez envie d’aller plus loin avec php, je vous invite à lire :
[Programmation] Comment écrire l’instruction switch en php et d’autres langages
Point d’intérêt de cet article : Php, bug, calcul, temps.
Mots clefs liés à cet article:
- php durée entre deux dates
- différence entre deux dates php
- php calculer différence entre 2 dates
- php différence entre deux dates
- calculer la différence entre deux dates php
- php date interval
- php interval date
- interval date php
besoin de verifier:)
Bonjour,
Si vous avez besoin d’éclaircissement sur ce que j’ai écris ou si vous n’êtes pas d’accord n’hésitez pas à m’en dire un peu plus. Je vous répondrais avec plaisir.
Ok pour l’affichage de ce résultat, mais il semble qu’il n’y ait pas vraiment moyen de l’exploiter.
En effet, je n’arrive pas à faire de comparaison avec…
Bonjour Kai-Ho,
quel type de comparaison cherchez vous à faire?
Quelque chose du genre
if ($interval->format(%d) >= 2)
pour savoir si le nombre de jours est supérieur ou égal à 2, par exemple.
Pour cela il te suffit de faire :
if($interval->d >= 2 ){
echo ‘intervalle de temps supérieur ou égale à 2 jours’;
}else{
echo ‘intervalle de temps inférieur à 2 jours’;
}
super, merci beaucoup, j’essaye ça de suite !
Attention, vu que %a ne fonctionne pas si ton intervalle de temps est supérieur a 1 mois il faut que tu rajoutes la condition ‘ || $interval->m > 0 || $interval->y > 0’ dans ton if.
Exemple:
if($interval->d >= 2 || $interval->m > 0 || $interval->y > 0 ){
echo ‘intervalle de temps supérieur ou égale à 2 jours’;
}else{
echo ‘intervalle de temps inférieur à 2 jours’;
}
Bonjour,
moi je veux savoir comment on calcule le temps écoulé après avoir poster un commentaire comme sur facebook.
ex: Posté il y a 02 minutes
Posté il y a 1 jour 52 minutes
Posté il y a environ 4 secondes
etc…
Qui peux m’aider?
Merci.
Bonjour,
A priori , ils enregistrent la date et l’heure de l’envoie du commentaire en base de données.
Ensuite, a l’affichage du commentaire ils n’ont plus qu’a faire une soustraction entre l’heure/date actuelle et celle de l’enregistrement.
Cette soustraction peut être directement faites en sql, ou tout autre langage (php, c# …) qui permet de récupérer et afficher ces données.
Merci pour la réponse!
Comme je suis un peu débutant en php; je veux si tu peux me donner un exemple.
Il faut faire quelque chose comme ca:
Je te conseille de regarder le manuel php :
http://www.php.net/manual/en/function.mysql-db-query.php