Différence entre 2 dates

Résolu/Fermé
griko Messages postés 343 Date d'inscription samedi 31 janvier 2009 Statut Membre Dernière intervention 29 avril 2014 - 14 oct. 2010 à 10:41
griko Messages postés 343 Date d'inscription samedi 31 janvier 2009 Statut Membre Dernière intervention 29 avril 2014 - 14 oct. 2010 à 11:43
Bonjour,
j'ai un problème sur la différence entre 2 dates,

j'utilise
function date_to_timestamp ($date) {
    return preg_match('/^\s*(\d\d\d\d)-(\d\d)-(\d\d)\s*(\d\d):(\d\d):(\d\d)/', $date, $m)
           ?  mktime($m[4], $m[5], $m[6], $m[2], $m[3], $m[1])
           : 0;
}
$difdatej = date_to_timestamp($datedeb) - date_to_timestamp($datefin);


avec pour $datedeb = 2010-10-11
et pour $datefin = 2010-10-14

il me retourne 1 jour, pour moi, 14-11 ne fait pas 1 !

Quelqu'un pourrait m'éclaircir ? Merci


A voir également:

1 réponse

le_joker_fou Messages postés 764 Date d'inscription mercredi 5 août 2009 Statut Membre Dernière intervention 7 août 2014 239
14 oct. 2010 à 11:28
Bien compliqué tout ça. Pourquoi ne pas faire plus simple :

        // date de début en secondes
	$date_deb =  date('U',mktime(0,0,0,10,9,2010));
	
        //date actuel en secondes
	$now = date('U');
	
        //différence entre les 2 dates en secondes
	$dif = $now - $date_deb;
	
        // on divise par 3600 (seconde dans 1h) *24 (nb heures/jour)
	// on arrondi pour le jour
        $jour = round($dif/(3600*24));
	
       // on obtient 5 (date du post 14/10/2010)
	echo $jour;
0
griko Messages postés 343 Date d'inscription samedi 31 janvier 2009 Statut Membre Dernière intervention 29 avril 2014 10
14 oct. 2010 à 11:43
entre temps j'ai trouvé autre chose :

// on aurait également pu plutot utiliser
		list($anneed, $moisd, $jourd) = explode('-', $datedeb);
		list($anneef, $moisf, $jourf) = explode('-', $datefin);
		// on transforme la date en timestamp
		$timestampd = mktime(0, 0, 0, $moisd, $jourd, $anneed);
		$timestampf = mktime(0, 0, 0, $moisf, $jourf, $anneef);
		 
		// -- CALCUL --
		// on calcule le nombre de secondes d'écart entre les deux dates
		$ecart_secondes = $timestampf - $timestampd;
		// puis on tranforme en jours (arrondi inférieur)
		$ecart_jours = floor($ecart_secondes / (60*60*24));
0