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

Messages postés
31
Date d'inscription
jeudi 25 mars 2010
Dernière intervention
18 septembre 2010
- 5 sept. 2010 à 10:44 - Dernière réponse :
Messages postés
2382
Date d'inscription
lundi 4 février 2002
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 

Votre réponse

5 réponses

Meilleure réponse
Messages postés
31
Date d'inscription
jeudi 25 mars 2010
Dernière intervention
18 septembre 2010
- 5 sept. 2010 à 11:05
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.

Merci BenamourJr 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 87 internautes ce mois-ci

Commenter la réponse de BenamourJr
Messages postés
2382
Date d'inscription
lundi 4 février 2002
Dernière intervention
29 décembre 2012
- 5 sept. 2010 à 18:04
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
Dernière intervention
27 avril 2012
- 6 sept. 2010 à 07: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
Dernière intervention
27 avril 2012
- 6 sept. 2010 à 07:28
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
Dernière intervention
29 décembre 2012
- 6 sept. 2010 à 09:05
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

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.