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
Si vous ne pouvez expliquer un concept à un enfant de six ans, c'est que vous ne le comprenez pas complètement. Albert EINSTEIN
F.A.Q. : Java, PHP, (X)HTML / CSS
N'oubliez pas de cliquer sur le bouton Résolu en bas de page quand vous avez obtenu une solution à votre problème
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 ?
N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP
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.
N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP
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; } }
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager