Problème pour convertir une date numérique au format lettre [Résolu]

Messages postés
31
Date d'inscription
jeudi 25 mars 2010
Statut
Membre
Dernière intervention
18 septembre 2010
- - Dernière réponse : syndrael
Messages postés
2382
Date d'inscription
lundi 4 février 2002
Statut
Membre
Dernière intervention
29 décembre 2012
- 6 sept. 2010 à 09:05
Bonjour,

Je fais face à un problème que j'ai du mal à comprendre, c'est pourquoi je viens vers vous en espérant que vous puissiez m'éclairer un peu.

Voici mon code (simplifié) qui vise à transformer au format lettre le numéro d'un mois :

<?php
$date_inscription = '15/09/2010';

$date_inscription_exploded = explode('/', $date_inscription);

echo $date_inscription_exploded[1];

switch ($date_inscription_exploded[1])
{
case 01:
$mois_inscription = ' janvier ';
break;

case 02:
$mois_inscription = ' février ';
break;

case 03:
$mois_inscription = ' mars ';
break;

case 04:
$mois_inscription = ' avril ';
break;

case 05:
$mois_inscription = ' mai ';
break;

case 06:
$mois_inscription = ' juin ';
break;

case 07:
$mois_inscription = ' juillet ';
break;

case 08:
$mois_inscription = ' août ';
break;

case 09:
$mois_inscription = ' septembre ';
break;

case 10:
$mois_inscription = ' octobre ';
break;

case 11:
$mois_inscription = ' novembre ';
break;

case 12:
$mois_inscription = ' décembre ';
}

echo $mois_inscription;
?>


Le code fonctionne parfaitement lorsque le mois est compris entre 01 et 07 ainsi qu'entre 10 et 12 (ce script m'affiche donc par exemple "03 mars" si la date est "15/03/1988") MAIS il ne m'affiche que "08" ou "09" lorsque date est par exemple 15/08/1988 ou 15/09/1988... impossible donc de retranscrire ces deux mois au format lettre... o.O

Cas concret :
1) un membre qui s'est inscrit le 25 mars 2010, aucun problème d'affichage :
http://www.e-storia.info/fiche_membre.php?id=1
2) un membre qui s'est inscrit le 26 aout 2010, le mois ne s'affiche pas :
http://www.e-storia.info/fiche_membre.php?id=75

Quelqu'un pourrait-il m'indiquer d'où vient mon erreur ? Merci :)
Afficher la suite 

5 réponses

Meilleure réponse
Messages postés
31
Date d'inscription
jeudi 25 mars 2010
Statut
Membre
Dernière intervention
18 septembre 2010
1
3
Merci
Problème résolu en supprimant le 0 devant le numéro du mois car apparemment un entier précédé d'un 0 est considéré en octal (base 8). Comme 8 et 9 n'existent pas en octal ces chiffres deviennent 0 dans le code.

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 186 internautes nous ont dit merci ce mois-ci

Commenter la réponse de BenamourJr
Messages postés
2382
Date d'inscription
lundi 4 février 2002
Statut
Membre
Dernière intervention
29 décembre 2012
11
0
Merci
Mais bon, si tu joues en PHP5 avec DateTime et les variables pour définir ta langue cette traduction se fait en une ligne.. $madate->format('F');
et voila..
S.
Commenter la réponse de syndrael
Messages postés
3708
Date d'inscription
lundi 5 juillet 2004
Statut
Membre
Dernière intervention
27 avril 2012
21
0
Merci
Salut,

J'ai comme l'impression que tu te prends beaucoup la tête :

<?php
$date = '15/09/2010';
$aDate = explode('/', $date);
echo strftime("%d %B %Y", mktime(0, 0, 0, $aDate[1], $aDate[0], $aDate[2]));
?>


Concernant ton pb il aurait fallu "caster" en string en ajoutant des apostrophes :

case '01', case '02', ...



Cordialement,


Kohntark -
Commenter la réponse de kohntark
Messages postés
3708
Date d'inscription
lundi 5 juillet 2004
Statut
Membre
Dernière intervention
27 avril 2012
21
0
Merci
Oups, je n'avais pas vu ton message Syndrael.

Je préfère ta solution mais il me semblait que format ne prenait pas en compte les locales ?

... en vérifiant :
Notes

Cette méthode n'utilise pas les locales. Toute sortie est en anglais.


Non ?


Cordialement,

Kohntark -
Commenter la réponse de kohntark
Messages postés
2382
Date d'inscription
lundi 4 février 2002
Statut
Membre
Dernière intervention
29 décembre 2012
11
0
Merci
Ah oui, au temps pour moi, 'MA' classe DateTime est un héritage de l'originale..Je l'avais faite lors de la sortie de la 5.2.. on se fait plus tout jeune, et en plus je l'ai mise en plusieurs langues, d'ou l'héritage..
Merci de cette correction
S.
Commenter la réponse de syndrael