Bonjour,
Je ne trouve pas de fonctions en PHP qui permette de calculer le nombre de jours séparant 2 dates.
Existe t-elle (la fonction) ou faut il se la créer ?
Bonjour,
Je ne trouve pas de fonctions en PHP qui permette de calculer le nombre de jours séparant 2 dates.
Existe t-elle (la fonction) ou faut il se la créer ?
Salut, merci de regarder dans la FAQ avant de poster
http://php.developpez.com/faq/?page=...ate_difference
La fonction de la FAQ ne fonctionne pas avec les changements horaires...
Pourrais-tu donner un cas qui ne fonctionne pas comme tu le voudrais ?
Voici le problème avec le changement horaire du 26 ou 27 octobre.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 <?php //Définition des date au format jour-mois-année $date1 = "20-10-2008"; $date2 = "30-10-2008"; //Extraction des données list($jour1, $mois1, $annee1) = explode('-', $date1); list($jour2, $mois2, $annee2) = explode('-', $date2); //Calcul des timestamp $timestamp1 = mktime(0,0,0,$mois1,$jour1,$annee1); $timestamp2 = mktime(0,0,0,$mois2,$jour2,$annee2); echo abs($timestamp2 - $timestamp1)/86400; //Affichage du nombre de jour : 10.0416666667 au lieu de 10 ?>
Il y a juste a faire l'arrondi.
Il n'y a pas de réelle methode simple pour gérer ça proprement.
Il faudrait alors le préciser dans la FAQ cela évitera à certain de faire des erreurs et de ne pas comprendre d'où vient l'erreur.
Par contre je ne sais pas comment éditer la FAQ ou faire modifier la FAQ.
Bonjour,
Le code ci-dessous semble fonctionner correctement :
Je l'ai testé avec succès, sur différent fuseaux horaires.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21 <?php function TSDate($date) { $laDate = new DateTime($date); $offset = ($laDate -> getOffset()); $decalage = ($offset < 0) ? $offset . ' seconds' : '+' . $offset . ' seconds'; $laDate -> modify($decalage); return $laDate -> format('U'); } //---------------------------------------------------------------------------- //---------------------------------------------------------------------------- $dateDeb = '20-10-2008'; $dateFin = '30-10-2008'; $debut = TSDate($dateDeb); $fin = TSDate($dateFin); $ecart = abs($fin - $debut) / 86400; echo 'écart du ' . $dateDeb . ' au ' . $dateFin . ' : ' . $ecart . ' jour(s)'; ?>
L'objet 'DateTime' et ses méthodes associées existent depuis PHP 5.1. Elles permettent en outre de travailler sur des dates très largement inférieures a l'EPOC.
Un tutoriel se trouve ici :
http://julien-pauli.developpez.com/tutoriels/php/dates/
Un code qui fonctionne bien, on arrondi au supèrieur ou infèrieur pour le changement d'heure.
Code php : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25 function NbJours($debut, $fin) {//Nombre de jour entre 2 date $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]); if(intval($tDeb[1]) >= 7) { return abs(floor((($diff / 86400)+1))); } elseif(intval($tDeb[1]) < 7) { return abs(ceil((($diff / 86400)+1))); } else { echo "Problème pour calculer le nombre de jours"; exit; } }
Partager