Affichage des dates

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Affichage des dates

Re: Affichage des dates

par lacfab » 10 juin 2010, 13:50

MERCI

Re: Affichage des dates

par stealth35 » 10 juin 2010, 11:56

utilise le +1 day y'aura pas de soucis
$debut = strtotime('2010-10-29');  
$fin   = strtotime('2010-11-07'); 
$date  = $debut;
 
while($temp = strtotime('+1 day', $date))
{    
    echo date('Y-m-d', $temp) . '<br />';
        
    if($temp >= $fin)
    {
        break;
    }
    else
    {
        $date = $temp;
    }
}

Re: Affichage des dates

par stealth35 » 10 juin 2010, 11:37

LOL ah oui effectivement ! Le plus flagrant est encore la deuxième solution ! Faut juste prendre le temps de se relire MDR

Mais comment ça se fait que sans mettre le +20000 ça met deux fois la même date (avec un timestamp pourtant bon) et que ça décale toute la suite ? comprend pas moi

parce que le 31 octobre on change d'heure :mrgreen:

Re: Affichage des dates

par lacfab » 10 juin 2010, 11:19

LOL ah oui effectivement ! Le plus flagrant est encore la deuxième solution ! Faut juste prendre le temps de se relire MDR

Mais comment ça se fait que sans mettre le +20000 ça met deux fois la même date (avec un timestamp pourtant bon) et que ça décale toute la suite ? comprend pas moi

Re: Affichage des dates

par stealth35 » 10 juin 2010, 09:51

tu t'embete beaucoup
$tDeb = explode("-", $ddd);  
$debut = mktime(0, 0, 0, $tDeb[1], $tDeb[2], $tDeb[0]);
===
$debut = strtotime($ddd);
$ladatedujour = date('Y', $d+"20000").'-'.date('m', $d+"20000").'-'.date('d', $d+"20000");
===
$ladatedujour = date('Y-m-d', $d+"20000");

Re: Affichage des dates

par lacfab » 10 juin 2010, 06:16

Je viens de tester un truc à la mode "Manouche" et ça marche. En fait je rajoute des secondes à ma valeur d'affichage.
<?php
$ddd = "2010-10-29";  
$eee = "2010-11-07";  

$tDeb = explode("-", $ddd);  
$debut = mktime(0, 0, 0, $tDeb[1], $tDeb[2], $tDeb[0]);
				   
$tFin = explode("-", $eee);
$fin = mktime(0, 0, 0, $tFin[1], $tFin[2], $tFin[0]);
			
for ($d=$debut; $d<=$fin; $d += "86400"){
    $ladatedujour = date('Y', $d+"20000").'-'.date('m', $d+"20000").'-'.date('d', $d+"20000");
	echo $ladatedujour.' ('.$d.')<br />';
}
?>
Résultat :
2010-10-29 (1288303200)
2010-10-30 (1288389600)
2010-10-31 (1288476000)
2010-11-01 (1288562400)
2010-11-02 (1288648800)
2010-11-03 (1288735200)
2010-11-04 (1288821600)
2010-11-05 (1288908000)
2010-11-06 (1288994400)
2010-11-07 (1289080800)

Re: Affichage des dates

par lacfab » 10 juin 2010, 05:54

Désolé j'ai un peu tardé à la réponse ...

En fait j'ai tout qui fonctionne et qui tourne ... plusieurs pages qui utilisent ce procédé ... ça m'arrangerait VRAIMENT de conserver mon code ;) Si toutefois il est impossible de le débugger je verrai mais si je pouvais le conserver ça serait top cool !!!

Au fait inutile de le préciser mais toutes les dates de ma bdd sont du type : AAAA-MM-JJ.

Merci pour votre aide, car je ne parviens pas à enlever ce doublon sur le 31 octobre !
J'ai remis 86400 ... je ne sais plus pourquoi j'ai fais -1 ... probablement pas pour rien ... ou pas !

EDIT :
J'ai remplacé $d++ par $d dans mon for du coup.

Si je met 2011 en année j'ai le résultat suivant :
2011-10-29
2011-10-30
2011-10-30
2011-10-31
2011-11-01
2011-11-02
2011-11-03
2011-11-04
2011-11-05
2011-11-06
Cette fois c'est le 30 novembre qui est en double ... est ce que quelqu'un peut m'expliquer pourquoi CETTE date et seulement fin novembre ? Je pige pas où est le bug ni comment il se produit en fait !

EDIT 2 : si je met en date du 1er janvier au 31 decembre je n'ai pas le doublon, si je remet du 29 octobre au 07 novembre c'est le bug ... gasp !

Re: Affichage des dates

par stealth35 » 19 avr. 2010, 10:01

hello,
pour le date en français t'embetes pas y'a strftime pour ca, pareil pour les parser (explode + mktime), strtotime est la pour toi, d'ailleur strtotime sera plus pratique que ton +86399 (en plus c'est 86400), tu feras juste "+1 day"
:wink:

EDIT d'ailleurs tu peux utiliser la fonction DatePeriod

Affichage des dates

par lacfab » 19 avr. 2010, 06:25

Bonjour, j'ai un soucis avec l'agenda que j'ai créé.
Il est censé m'afficher une liste de date (auxquelles sont attachées des évènements ... bla bla bla).

Cela marche parfaitement depuis plusieurs mois /année SAUF pour UNE date !

Il m'affiche deux fois le 31 octobre ... je ne sais pas pourquoi !
Voici mon code et le résultat :

Code :

Code : Tout sélectionner

<?php $ddd = "2010-10-29"; $eee = "2010-11-07"; //Pour les conversions de dates : $monthesFR = array('','janvier','f&#233;vrier','mars','avril','mai','juin','juillet','ao&#251;t','septembre','octobre','novembre','d&#233;cembre'); $daysFR = array('Dimanche','Lundi','Mardi','Mercredi','Jeudi','Vendredi','Samedi'); $tDeb = explode("-", $ddd); $debut = mktime(0, 0, 0, $tDeb[1], $tDeb[2], $tDeb[0]); $tFin = explode("-", $eee); $fin = mktime(0, 0, 0, $tFin[1], $tFin[2], $tFin[0]); for ($d=$debut; $d<=$fin; $d++){ //On repasse les timestamps en vraies dates $date_first = $daysFR[date('w', $d)]; $date_second = $monthesFR[date('n', $d)]; $ladatedujour = date('Y', $d).'-'.date('m', $d).'-'.date('d', $d); echo $ladatedujour.'<br />'; $d = $d + "86399"; } ?>
Résultat :
2010-10-29
2010-10-30
2010-10-31
2010-10-31
2010-11-01
2010-11-02
2010-11-03
2010-11-04
2010-11-05
2010-11-06
Une idée de pourquoi JUSTE CETTE DATE s'affiche en double ???