IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

[Dates] Bug avec ma fonction formatage de date


Sujet :

Langage PHP

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 13
    Points : 8
    Points
    8
    Par défaut [Dates] Bug avec ma fonction formatage de date
    Bonjour,

    Je stocke dans une BDD mysql des dates, j'utilise une fonction en php pour
    reformater la date.

    Exemple : 2007-04-03 devient 3 avril 2007

    Voici mon code source :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
     
    <?php
     
    $date = "2010-08-09";
    $tableau = explode("-", $date);
     
    	switch ($tableau[1]) {
    	case 01:
        	$mois = "janvier";
        	break;
    	case 02:
        	$mois = "février";
        	break;
    	case 03:
        	$mois = "mars";
        	break;
    	case 04:
        	$mois = "avril";
        	break;
    	case 05:
        	$mois = "mai";
        	break;
    	case 06:
        	$mois = "juin";
        	break;
    	case 07:
        	$mois = "juillet";
        	break;
    	case 08:
        	$mois = "août";
        	break;
    	case 09:
        	$mois = "septembre";
        	break;
    	case 10:
        	$mois = "octobre";
        	break;
    	case 11:
        	$mois = "novembre";
        	break;
    	case 12:
        	$mois = "décembre";
        	break;
    	default:
    		$mois = "AUCUN_MOIS";
    	}
     
    	switch ($tableau[2]) {
    	case 01:
        	$jour = "1";
        	break;
    	case 02:
        	$jour = "2";
        	break;
    	case 03:
        	$jour = "3";
        	break;
    	case 04:
        	$jour = "4";
        	break;
    	case 05:
        	$jour = "5";
        	break;
    	case 06:
        	$jour = "6";
        	break;
    	case 07:
        	$jour = "7";
        	break;
    	case 08:
        	$jour = "8";
        	break;
    	case 09:
        	$jour = "9";
        	break;
    	default:
    		$jour = $tableau[2];
    	}
     
    $annee = $tableau[0];
     
    echo $jour." ".$mois." ".$annee;
     
    ?>
    J'ai remarqué que lorsque le mois ou le jour prenne la valeur 08 ou 09 (essayer vous même en changeant la valeur de la variable $date), mon script n'affiche pas ce qu'il devrait et sincèrement c'est incompréhensible.

    Une idée pour résoudre ce problème ?

  2. #2
    Expert éminent Avatar de Mr N.
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 5 418
    Points : 6 449
    Points
    6 449
    Par défaut
    Tout simplement parce que tu utilises le systeme octal en préfixant tes nombres par le caractère 0 : http://php.net/manual/fr/language.types.integer.php
    Or 8 n'existe pas en système octal...
    Soit tu transformes tes en soit tu les transforme en

  3. #3
    Membre habitué Avatar de M1000
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Novembre 2003
    Messages
    201
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Santé

    Informations forums :
    Inscription : Novembre 2003
    Messages : 201
    Points : 186
    Points
    186
    Par défaut
    Salut, essais ca...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
     
    <?php
     
    $date = "2010-08-09";
    $tableau = explode("-", $date);
     
    	switch ($tableau[1]) {
    	case "01":
        	$mois = "janvier";
        	break;
    	case "02":
        	$mois = "février";
        	break;
    	case "03":
        	$mois = "mars";
        	break;
    	case "04":
        	$mois = "avril";
        	break;
    	case "05":
        	$mois = "mai";
        	break;
    	case "06":
        	$mois = "juin";
        	break;
    	case "07":
        	$mois = "juillet";
        	break;
    	case "08":
        	$mois = "août";
        	break;
    	case "09":
        	$mois = "septembre";
        	break;
    	case "10":
        	$mois = "octobre";
        	break;
    	case "11":
        	$mois = "novembre";
        	break;
    	case "12":
        	$mois = "décembre";
        	break;
    	default:
    		$mois = "AUCUN_MOIS";
    	}
     
    	switch ($tableau[2]) {
    	case "01":
        	$jour = "1";
        	break;
    	case "02":
        	$jour = "2";
        	break;
    	case "03":
        	$jour = "3";
        	break;
    	case "04":
        	$jour = "4";
        	break;
    	case "05":
        	$jour = "5";
        	break;
    	case "06":
        	$jour = "6";
        	break;
    	case "07":
        	$jour = "7";
        	break;
    	case "08":
        	$jour = "8";
        	break;
    	case "09":
        	$jour = "9";
        	break;
    	default:
    		$jour = $tableau[2];
    	}
     
    $annee = $tableau[0];
     
    echo $jour." ".$mois." ".$annee;
     
    ?>
    Avec les " " tout devrait rentrer dans l'ordre.

  4. #4
    Expert éminent Avatar de Mr N.
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 5 418
    Points : 6 449
    Points
    6 449
    Par défaut
    une autre solution :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    <?php
     
    $date = "2010-08-09";
    $tableau = explode("-", $date);
    $les_mois = array('janvier', 'février', 'mars', 'avril', 'mai', 'juin', 'juillet', 'aout', 'septembre', 'octobre', 'novembre', 'décembre');
     
    $annee = $tableau[0];
    $mois = $les_mois[(int)$tableau[1]];
    $jour = (int)$tableau[2];
     
    echo $jour .' '. $mois .' '. $annee;
    ?>

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 13
    Points : 8
    Points
    8
    Par défaut
    Merci bien pour vos solutions.

    Bonne après midi à tous les deux.

  6. #6
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 13
    Points : 8
    Points
    8
    Par défaut
    Il y'a une petite erreur dans la solution de Mr N. .

    Remplacer çà :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $mois = $les_mois[(int)$tableau[1]];
    Par :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $mois = $les_mois[(int)$tableau[1]-1];
    Voili, voilou.


    A+

  7. #7
    Expert éminent Avatar de Mr N.
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 5 418
    Points : 6 449
    Points
    6 449
    Par défaut
    Aux temps pour moi...
    Le pire c'est que j'ai meme pas tilté que j'avais septembre pour le mois n°8 lors de mes tests

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Bug avec les champs de paramètres date
    Par nico_duflot dans le forum SAP Crystal Reports
    Réponses: 4
    Dernier message: 10/06/2013, 17h30
  2. [Dates] Problème avec la fonction date()
    Par Kernald dans le forum Langage
    Réponses: 5
    Dernier message: 16/02/2007, 11h50
  3. [Dates] probleme avec la manipulation de la date
    Par leclone dans le forum Langage
    Réponses: 3
    Dernier message: 24/01/2007, 12h29
  4. [Dates] probleme avec mktime et interval entre dates
    Par steinfield dans le forum Langage
    Réponses: 7
    Dernier message: 18/05/2006, 12h47
  5. [Dates] Problème avec la fonction header
    Par d.w.d dans le forum Langage
    Réponses: 2
    Dernier message: 06/09/2005, 16h33

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo