Format date en toute lettre

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 : Format date en toute lettre

par mcorgnet » 24 juin 2008, 14:49

Schrell évoquait le mot clé SQL "DATE". C'est effectivement pas une bonne idée de l'utiliser pour un nom de champ, certaines opérations pourraient te poser problème.

par fabrice88250 » 24 juin 2008, 14:46

j'ai les bonnes date avec un simple echo resultat["date"];

par Shrell » 24 juin 2008, 14:30

Il faut passer à la fonction strftime non pas une date mais un timestamp UNIX. Du fait qu'il ne reconnait pas ce que tu lui passes en paramètre, il te renvoie le 1er Janvier 1970, qui correspond au temps 0 dans le monde *NIX
Il faut que tu transformes ta date en timestamp, pour cela deux moyens au choix :

Code : Tout sélectionner

SELECT UNIX_TIMESTAMP(date) AS date FROM photosnap
ou, en gardant ta requete actuelle
strftime("%A %e %B %Y", strtotime($resultat["date"]));
Au passage : évite d'appeler ton champ "date", c'est un mot clé réservé

par guilt92 » 24 juin 2008, 14:28

Ton champ date dans ta table est bien de format DATE ?

Fais un echo resultat["date"]; pour voir si tu récupères la bonne valeur.

par fabrice88250 » 24 juin 2008, 14:23

ok c'est bien en francais mais pourquoi il me sort un date qui n'a rien a voir avec la réalité ?

Code : Tout sélectionner

setlocale(LC_TIME, 'fr_FR','fra'); echo strftime("%A %e %B %Y",$resultat["date"]);
il me sort toujours : jeudi 1 janvier 1970 au lieu des bonnes dates.

par guilt92 » 24 juin 2008, 14:12

Shrell marque un point :

setlocale(LC_TIME, 'fr_FR','fra'); 
echo strftime("%B",$resultat["date"]);
fonctionne (sans tableau :)).

En php5 je pensais que date_timezone_set() servait aussi pour la fonction date() mais j'ai pas testé donc je suis pas sûr...

par fabrice88250 » 24 juin 2008, 14:10

ok merci. je vais donc opté pour t'as premiere solution. 8-)

par mcorgnet » 24 juin 2008, 14:08

Je pensais à faire un équivalent du tableau php, mais en sql. doit bien y avoir une solution non ?

par Shrell » 24 juin 2008, 14:06

EDIT

Remarque, je me demande si c'est pas faisable en SQL ...
Si, mais tu auras le même résultat, c'est à dire en anglais

par Shrell » 24 juin 2008, 14:05

sans vouloir dire de bêtise, je crois que date() renverra toujours un résultat en anglais
si tu veux un résultat en français, regarde du coté de setlocale() et strftime(), qui ne t'obligent pas à passer par un tableau

par mcorgnet » 24 juin 2008, 14:03

C'est pour ça que je te parlais d'un tableau de variables, d'un autre côté ...

EDIT

Remarque, je me demande si c'est pas faisable en SQL ...

par fabrice88250 » 24 juin 2008, 14:02

ok sa fonctionne sauf que c'est en anglais.

par guilt92 » 24 juin 2008, 13:49

Tu peux le faire, par contre si tu n'es pas en php 5 je crois que tu dois passer par un tableau pour l'avoir en français... Mais sinon par exemple :
echo date("F",$resultat['date']);
devrait fonctionner (et tu peux rajouter autour le jour et l'année si tu veux....

par fabrice88250 » 24 juin 2008, 13:45

ok merci. je regardai sur http://fr.php.net/date et il me semblait que l'on pouvait afficher en toute lettre sen etre obligé de passer par un tableau de variables .

par mcorgnet » 24 juin 2008, 13:33

En plaçant tes mois dans un tableau de variables :
$listeMois = array('01' =>  'janvier', '02' => 'fevrier' ....);
et en récupérant la valeur de ton mois dans ta date en sortie de BD (avec MONTH en sql), puis depuis php :
echo $listeMois [$month];