Problème de recupération de difference de date

Messages postés
458
Date d'inscription
lundi 24 août 2009
Dernière intervention
8 décembre 2018
- - Dernière réponse : msi79
Messages postés
458
Date d'inscription
lundi 24 août 2009
Dernière intervention
8 décembre 2018
- 14 mars 2017 à 19:43
Bonjour,
je voudrais récuperer la difference de deux dates qui se trouvent dans un champs date_entree et date_sortie.
1. recuperer la difference entre date_entree et date_sortie
2.recuperer la difference entre date_entree et la date du jour

voici l'image



mon problème est que pour ce que de la différence entre date_entree et date_sortie ca marche bien puisque j'obtiens: 9 J 0 H 0 Mn 0 s

mais quand je fais la différence date_entree et la date du jour ça me donne : 32 J 8 H 4 Mn 44 s. Ce qui est incorrecte



voici mon code

    <?php
	
//RECUPERATION DU TEMPS  EFFECTUEE
echo $date_du_jour.'<br/>';;
$now   = strtotime($date_du_jour); echo $now.'<br/>';
$date2 = strtotime($event["date_entree"]);echo $date2.'<br/>'  ;
$date3 = strtotime($event["date_sortie"]);echo $date3.'<br/>';
//echo strtotime($date_du_jour).'<br/>';
//echo ((strtotime($date_du_jour)) - strtotime($event["date_entree"]));
function dateDiff($date1, $date2){
    $diff = abs($date1 - $date2); // abs pour avoir la valeur absolute, ainsi éviter d'avoir une différence négative
    $retour = array();
 
    $tmp = $diff;
    $retour['second'] = $tmp % 60;
 
    $tmp = floor( ($tmp - $retour['second']) /60 );
    $retour['minute'] = $tmp % 60;
 
    $tmp = floor( ($tmp - $retour['minute'])/60 );
    $retour['hour'] = $tmp % 24;
 
    $tmp = floor( ($tmp - $retour['hour'])  /24 );
    $retour['day'] = $tmp;
 
    return $retour;
}
 
//RECUPERATION DU TEMPS A EFFECTUER
 
$date_diff2 = (dateDiff($date2, $date3) );
$jours2 = $date_diff2["day"];
$heure2 = $date_diff2["hour"];
$minute2 = $date_diff2["minute"];
$seconde2 = $date_diff2["second"];
echo  $jours2.' J '.$heure2.' H '.$minute2.' Mn '.$seconde2.' s'.'<br/>';
//print_r( dateDiff($date2, $date3) );



//RECUPERATION DU TEMPS EFFECTUER
$date_diff1 = (dateDiff($date2,$now) ); 
$jours = $date_diff1["day"];
$heure = $date_diff1["hour"];
$minute = $date_diff1["minute"];
$seconde = $date_diff1["second"];
echo  $jours.' J '.$heure.' H '.$minute.' Mn '.$seconde.' s'.'<br/>';;
//print_r( dateDiff($now, $date2) );
?>
Afficher la suite 

Votre réponse

2 réponses

Messages postés
23551
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
9 décembre 2018
0
Merci
Bonjour
Que vaut ta variable $date_du_jour ?
Que vaut ta variable $now ?


Sachant que le mieux pour calculer un intervelle est d'utiliser la class DateTime
function dateDiff($date1, $date2){
  $retour=array();
  $start_date = new DateTime($date1);
  $diff = $start_date->diff(new DateTime($date2));
  $retour['days total'] = $diff->days;
  $retour['year'] = $diff->y;
  $retour['month'] = $diff->m;
  $retour['day'] = $diff->d;
  $retour['hour'] = $diff->h;
  $retour['minute'] = $diff->i;
  $retour['second'] = $diff->s;
  return $retour;
}

Commenter la réponse de jordane45
Messages postés
458
Date d'inscription
lundi 24 août 2009
Dernière intervention
8 décembre 2018
0
Merci
1.Que vaut ta variable $date_du_jour ?
Que vaut ta variable $now
date_default_timezone_set('GMT');
$date_du_jour =gmdate('Y-m-d H:i:s', time());
$now   = strtotime($date_du_jour);


2. quand je fait un print_f ça me retoune rien

$now   = strtotime($date_du_jour); echo $now.'<br/>';
$date2 = strtotime($event["date_entree"]);//echo $date2.'<br/>'  ;
$date3 = strtotime($event["date_sortie"]);//echo $date3.'<br/>';

function dateDiff($date1, $date2){
  $retour=array();
  $start_date = new DateTime($date1);
  $diff = $start_date->diff(new DateTime($date2));
  $retour['days total'] = $diff->days;
  $retour['year'] = $diff->y;
  $retour['month'] = $diff->m;
  $retour['day'] = $diff->d;
  $retour['hour'] = $diff->h;
  $retour['minute'] = $diff->i;
  $retour['second'] = $diff->s;
  return $retour;
}
print_r( dateDiff($date2, $date3) );
Commenter la réponse de msi79

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.