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

Signaler
Messages postés
31
Date d'inscription
jeudi 25 mars 2010
Statut
Membre
Dernière intervention
18 septembre 2010
-
Messages postés
2381
Date d'inscription
lundi 4 février 2002
Statut
Membre
Dernière intervention
29 décembre 2012
-
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 :)

5 réponses

Messages postés
31
Date d'inscription
jeudi 25 mars 2010
Statut
Membre
Dernière intervention
18 septembre 2010
1
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.
Messages postés
2381
Date d'inscription
lundi 4 février 2002
Statut
Membre
Dernière intervention
29 décembre 2012
12
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.
Messages postés
3708
Date d'inscription
lundi 5 juillet 2004
Statut
Membre
Dernière intervention
27 avril 2012
25
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 -
Messages postés
3708
Date d'inscription
lundi 5 juillet 2004
Statut
Membre
Dernière intervention
27 avril 2012
25
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 -
Messages postés
2381
Date d'inscription
lundi 4 février 2002
Statut
Membre
Dernière intervention
29 décembre 2012
12
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.