Problème pour convertir une date numérique au format lettre

Résolu
BenamourJr Messages postés 31 Date d'inscription jeudi 25 mars 2010 Statut Membre Dernière intervention 18 septembre 2010 - 5 sept. 2010 à 10:44
syndrael Messages postés 2378 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 :)

5 réponses

BenamourJr Messages postés 31 Date d'inscription jeudi 25 mars 2010 Statut Membre Dernière intervention 18 septembre 2010 1
5 sept. 2010 à 11:05
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.
3
syndrael Messages postés 2378 Date d'inscription lundi 4 février 2002 Statut Membre Dernière intervention 29 décembre 2012 19
5 sept. 2010 à 18:04
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.
0
kohntark Messages postés 3706 Date d'inscription lundi 5 juillet 2004 Statut Membre Dernière intervention 27 avril 2012 30
6 sept. 2010 à 07:21
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 -
0
kohntark Messages postés 3706 Date d'inscription lundi 5 juillet 2004 Statut Membre Dernière intervention 27 avril 2012 30
6 sept. 2010 à 07:28
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 -
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
syndrael Messages postés 2378 Date d'inscription lundi 4 février 2002 Statut Membre Dernière intervention 29 décembre 2012 19
6 sept. 2010 à 09:05
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.
0