Problème de recupération de difference de date

msi79 388 Messages postés lundi 24 août 2009Date d'inscription 11 novembre 2017 Dernière intervention - 14 mars 2017 à 17:20 - Dernière réponse : msi79 388 Messages postés lundi 24 août 2009Date d'inscription 11 novembre 2017 Dernière intervention
- 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 

2 réponses

Répondre au sujet
jordane45 19257 Messages postés mercredi 22 octobre 2003Date d'inscriptionModérateurStatut 15 décembre 2017 Dernière intervention - 14 mars 2017 à 18:21
0
Utile
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
msi79 388 Messages postés lundi 24 août 2009Date d'inscription 11 novembre 2017 Dernière intervention - 14 mars 2017 à 19:43
0
Utile
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.