Formater une date

Répondre
tommy
tommy
Déconnecté
Bonsoir,
Comment obtenir la date au sortir de'une BDD dans le format : vendredi 13 novembre 2007

Merci d'avance
LupusMic
LupusMic
Déconnecté
Développeur récurrent, procédural et relationnel. Caustique soupe-au-lait.
À partir d'un timestamp, d'un datetime ou encore un autre format ?
tommy
tommy
Déconnecté
Bonjour LupusMic,

euh...
j'ai la date stockée dans ma BDD sous le format :

années.mois.jours.heures.minutes.secondes

et je voudrais la passer comme ceci :
Vendredi 16 novembre 2007

Merci
LA GLOBULE
LA GLOBULE
Déconnecté
111 111 111 x 111 111 111 = 12 345 678 987 654 321
Il faut que tu utilises la fonction strftime.
LupusMic
LupusMic
Déconnecté
Développeur récurrent, procédural et relationnel. Caustique soupe-au-lait.
(La Globule) Certes, mais il faut surtout qu'il sache ce qu'il manipule, sinon il va droit dans le mur.

Parce que ce qui est affiché par un select n'est pas forcément ce qui est stocké.

(tommy) Pour connaitre le type de champ, il faut que tu regardes la requête de création de la table.
LA GLOBULE
LA GLOBULE
Déconnecté
111 111 111 x 111 111 111 = 12 345 678 987 654 321
C'est pas faux, cette fonction prend un timestamp et non une string en paramètre :)
tommy
tommy
Déconnecté
re,
Voila la table :
`date` datetime NOT NULL default '0000-00-00 00:00:00',

+
i M@N
i M@N
Déconnecté
One Love, One Heart, One Unity.
Hello.

Essaye :
  1.  
  2. <?php
  3. /*
  4. soit $date = 2007-11-16 22:42:00 (format datetime)
  5. on décompose la date
  6.  
  7. */  
  8. sscanf($date, "%4s-%2s-%2s %2s:%2s:%2s", &$an, &$mois, &$jour, &$heure, &$min, &$sec);  
  9.  
  10. $date = date("D, d M Y",mktime(1, 0, 0, $mois, $jour, $an));  
  11. ?> 


@+...
LA GLOBULE
LA GLOBULE
Déconnecté
111 111 111 x 111 111 111 = 12 345 678 987 654 321
Le résultat n'est pas ce qu'il souhaite obtenir.
tommy
tommy
Déconnecté
re,
Non en effet je voudrais obtenir ce résultat :
Vendredi 16 novembre 2007
LupusMic
LupusMic
Déconnecté
Développeur récurrent, procédural et relationnel. Caustique soupe-au-lait.
Ok, donc maintenant qu'on a presque toutes les infos, on va pouvoir opérer (docteur Pater, un avé et... je m'égare).

1- il faut charger la locale qui va bien, qui va permettre aux fonctions de choisir correctement le nom du jour et du moins
2- convertir ce datetime en quelque chose de manipulable par les fonction de PHP.

  1.  
  2. <?php
  3.  
  4. $datetime = '2007-07-11 01:21:08' ;  
  5.  
  6. // Liste des locales du français de France  
  7. $locales_fr = array 
  8.    ( 'fr_FR.UTF-8@euro' 
  9.    , 'fr_FR.UTF-8' 
  10.    , 'fr_FR@euro' 
  11.    , 'fr_FR' 
  12.    , 'fr' 
  13.    ) ;  
  14.  
  15. // On donne la liste à manger. Voir la documentation de  
  16. // setlocale pour savoir ce  
  17. // qu'il se passe.  
  18. $locale = setlocale(LC_TIME, $locales_fr) ;  
  19.  
  20. if(!$locale) 
  21.    die("Les locales ne sont pas supportées !\n") ;  
  22.  
  23. printf("Aujourd'hui (%s)\n", strftime("%A %e %B %Y")) ;  
  24.  
  25. // date_parse disponible dès PHP > 5.1.3  
  26. $thatday = date_parse($datetime) ;  
  27. $thatday = mktime 
  28.       ( $thatday['hour'], $thatday['minute'], $thatday['second'] 
  29.       , $thatday['month'], $thatday['day'], $thatday['year']) ;  
  30.  
  31. printf("Le jour dans le datetime (%s)\n", strftime("%A %e %B %Y", $thatday)) ;  
  32.  
  33. ?>
  34.  


N'oublie pas de lire la documentation de chaque fonction.
tommy
tommy
Déconnecté
Bonjour,
Je sais pas vous mais moi je n'ai pas pu atteidre le site pendant tout le WE. Pour cette raison je viens de voir ton message que maintenant, Merci.
Moi j'ai fais comme ceci, ca ressemble grave à ton script :
  1. <?php function Fdate($date)  
  2. {  
  3. setlocale(LC_ALL, "fr");  
  4. return strftime("%A %d %B %Y", strtotime($date));  
  5. } ?> 

Si on ajoute setlocale(LC_ALL, "fr_FR"); on a la date en US

Merci LupusMic et tout les autres bien sur
Répondre
Accès rapide :

Remonter Remonter
L'éditeur javascript - CSS - Gentoo - Tutoriaux PHP - Tutoriels PHP - Breizh Blog