Page 1 sur 1

Nombre de jour entre 2 dates

Posté : 04 nov. 2011, 13:23
par fabrice88250
Bonjour,
pour compté le nombre de jours entre 2 date j'utilise le code suivant :
function NbJours($debut, $fin) {

  $tDeb = explode("-", $debut);
  $tFin = explode("-", $fin);

  $diff = mktime(0, 0, 0, $tFin[1], $tFin[2], $tFin[0]) - 
          mktime(0, 0, 0, $tDeb[1], $tDeb[2], $tDeb[0]);
  
  return(($diff / 86400)+1);

}

	$date1 = $result['datedemande'];
	$date2 = date("Y-m-d H:i:s", time());

// j'appel la fonction
$Nombres_jours =  NbJours($date1, $date2);
// j'affiche le resultat
echo ' soit : '.$Nombres_jours. ' jours';

mon soucis est que sa fonctionnait bien il y a encore quelque semaine j'avais bien un résultat correct mais depuis une mise a jour de l’hébergeur (je ne saurait dire quoi) au lieu d'avoir un resultat rond comme 3 jours j'ai des résultats à virgules !

Savez vous comment je pourrait faire pour retrouver un bon résultat ?

Re: Nombre de jour entre 2 dates

Posté : 04 nov. 2011, 13:27
par stealth35
utilise date_diff

Re: Nombre de jour entre 2 dates

Posté : 04 nov. 2011, 15:22
par dunbar
Ou DATEDIFF pour le faire directement via MySQL
SELECT DATEDIFF('2011-11-04' , '2011-11-02');
//Affichera 2

Re: Nombre de jour entre 2 dates

Posté : 04 nov. 2011, 16:02
par Cyrano
Il y en a qui n'ont pas les yeux en face des trous ... :roll:

Fabrice, observe bien ce que tu envoies à ta fonction : le premier paramètre devrait être correct si la colonne dans la table de ta base de données est au format DATE. Par contre le second paramètre est au format DATETIME. DOnc ta fonction reçoit par exemple '2011-11-01' et '2011-11-04 14:35:10'.

Que se passe-t-il dans ta fonction ? Un appel à explode récupère les éléments séparés par un tiret : pour l'année et le mois, pas de soucis, mais pour le jour, il aboutit à « 04 14:35:10 » au lieu de simplement « 04 », et donc c'est comme si tu faisais ensuite un maketime comme ceci :
mktime(0, 0, 0, 11, 04 14:35:10, 2011)
Le quatrième paramètre est-il correct à ton avis ?

CQFD... :-*

Re: Nombre de jour entre 2 dates

Posté : 04 nov. 2011, 16:22
par dunbar
Peut-être que certains sont bigleux, mais les deux solutions poster reste meilleur que le script d'origine \:D/

Re: Nombre de jour entre 2 dates

Posté : 04 nov. 2011, 16:38
par Castor Gaspard
Bonjour,

J'arrive après la bataille, mais j'ajoute mon grain de sel, puisque je passe par ici. Je ne crois pas que Php sache encore calculer les dates antérieures à 1970, mais la classe Date de Pear le fait très bien... à condition de ne pas calculer un écart de plus de 67 ans, avec une syntaxe comme...
$span = new Date_Span();
$span->setFromDateDiff($Day_end, $Day_start);
Cordialement,

Gaspard

Re: Nombre de jour entre 2 dates

Posté : 04 nov. 2011, 16:51
par Yosh
Et si tu es php >= 5.3

Il y a la classe DateTime et surtout DateInterval