Problème de recupération de difference de date

msi79 Messages postés 509 Date d'inscription lundi 24 août 2009 Statut Membre Dernière intervention 2 mai 2023 - 14 mars 2017 à 17:20
msi79 Messages postés 509 Date d'inscription lundi 24 août 2009 Statut Membre Dernière intervention 2 mai 2023 - 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) );
?>

2 réponses

jordane45 Messages postés 38138 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 avril 2024 344
14 mars 2017 à 18:21
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;
}

0
msi79 Messages postés 509 Date d'inscription lundi 24 août 2009 Statut Membre Dernière intervention 2 mai 2023 1
14 mars 2017 à 19:43
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) );
0
Rejoignez-nous