Bonjour,
j'ai 2 date et je veux récupéré les nombre de jours:
merci d'avance ??
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 $a='10-07-2011'; $b='13-10-2011';
Bonjour,
j'ai 2 date et je veux récupéré les nombre de jours:
merci d'avance ??
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 $a='10-07-2011'; $b='13-10-2011';
Hello
Compare les timestamp et divise le tout par 24*3600.
Si tu peux avoir les dates dans un format compatible avec strtotime c'est mieux, ça évite de devoir créer les timestamps manuellement avec mktime.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 $a='10-07-2011'; $b='13-10-2011'; list($d,$m,$y) = explode('-', $a); $ta = mktime(0,0,0, $m, $d,$y); list($d,$m,$y) = explode('-', $b); $tb = mktime(0,0,0, $m, $d,$y); echo "Il y a " . ceil(($tb - $ta) / 86400) . " jours entre $a et $b";
Tu peux aussi jouer avec DateTime::diff (PHP 5.3).
un jour c'est pas forcement 24h donc ça ne marche pas
En effet, j'avais oublié le coup des heures été / hiver.
Bon sinon y'a des solutions pour PHP < 5.3 sur cette page: http://www.php.net/manual/en/function.date-diff.php
merci pour votre aide la solution est :
Code : Sélectionner tout - Visualiser dans une fenêtre à part echo $nbjours = round((strtotime($b) - strtotime($a))/(60*60*24));
bah je l'est tester plusieurs fois et les résultats sont fiable . parce que pour mon cas je ne prend pas l'heure en considération seulement les date jour mois et l’année.
ça ne change rien. Tu t'expose à un bug car tu ne tiens pas compte des changements d'horaires été / hiver (en vigueur dans la plupart des pays).
comme disait Stealth, tous les jours ne font pas 24h du coup, or tu les divise par 24*3600.
donc la meilleure solution est ??? un exemple se sera parfait.merci
Comme mentionné plus haut: il y a plein de solution élégantes par ici http://www.php.net/manual/en/function.date-diff.php
Par exemple:
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
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36 <?php function dateDifference($startDate, $endDate) { $startDate = strtotime($startDate); $endDate = strtotime($endDate); if ($startDate === false || $startDate < 0 || $endDate === false || $endDate < 0 || $startDate > $endDate) return false; $years = date('Y', $endDate) - date('Y', $startDate); $endMonth = date('m', $endDate); $startMonth = date('m', $startDate); // Calculate months $months = $endMonth - $startMonth; if ($months <= 0) { $months += 12; $years--; } if ($years < 0) return false; // Calculate the days $offsets = array(); if ($years > 0) $offsets[] = $years . (($years == 1) ? ' year' : ' years'); if ($months > 0) $offsets[] = $months . (($months == 1) ? ' month' : ' months'); $offsets = count($offsets) > 0 ? '+' . implode(' ', $offsets) : 'now'; $days = $endDate - strtotime($offsets, $startDate); $days = date('z', $days); return array($years, $months, $days); } ?>
Partager