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] mktime et zero


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Août 2006
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 21
    Par défaut [Dates] mktime et zero
    Bonjour à tous,

    Je rencontre un "bug" qui me déroute un peu avec la fonction mktime....
    Celui-ci retourne un timestamp erroné quand les entiers donnés en paramètre commencent par 0...
    Exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    $tab_jours = array('Dimanche', 'Lundi', 'Mardi', 'Mercredi', 'Jeudi', 'Vendredi', 'Samedi');
    echo $tab_jours[date('w', mktime(0,0,0,7,9,2009))];
    Affiche bien "Jeudi" mais

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    $tab_jours = array('Dimanche', 'Lundi', 'Mardi', 'Mercredi', 'Jeudi', 'Vendredi', 'Samedi');
    echo $tab_jours[date('w', mktime(0,0,0,07,09,2009))];
    Affiche "Mardi"

    J'ai essayé de caster en int ou d'utiliser intval mais rien n'y fait....

    Merci pour votre aide.

  2. #2
    Membre chevronné
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    498
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 498
    Par défaut
    Bonjour,
    et en mettant des apostrophes autour de tes valeurs?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo $tab_jours[date('w', mktime(0,0,0,'07','09','2009'))];

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Août 2006
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 21
    Par défaut
    Merci pour la réponse.

    Oui, j'ai oublié de préciser, les quotes fonctionnent. Toutefois, je donne en réalité des variables en arguments

    J'ai simplifié l'exemple, voici le veritable code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    ...
    list($anneeJ,$moisJ,$jourJ) = sscanf($jour, "%d-%d-%d");
    ...
    $jourSemaine=$tab_jours[date('w', mktime(0,0,0,$moisJ,$jourJ,$anneeJ))];

  4. #4
    Membre chevronné
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    498
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 498
    Par défaut
    Je ne comprends pas! Tu dois récupérer un int dans ton expression :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    list($anneeJ,$moisJ,$jourJ) = sscanf($jour, "%d-%d-%d");
    un echo $moisJ te renvoie 9 et non 09?!?
    Chez moi, ce code fonctionne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    $jour = "2009-07-09";
    $tab_jours = array('Dimanche', 'Lundi', 'Mardi', 'Mercredi', 'Jeudi', 'Vendredi', 'Samedi');
    list($anneeJ,$moisJ,$jourJ) = sscanf($jour, "%d-%d-%d");
    $jourSemaine=$tab_jours[date('w', mktime(0,0,0,$moisJ,$jourJ,$anneeJ))];
     
    echo $jourSemaine;

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Août 2006
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 21
    Par défaut
    Ok, c'est bon j'ai trouvé.
    A un moment j'utilise un explode plutôt qu'un sscanf et là c'est le drame
    Donc j'ai remplacé par un sscanf.

    En effet,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    $jour = "2009-07-09";
    list($anneeJ, $moisJ, $jourJ) = explode('-', $jour);
    echo $jourJ.' '.$moisJ.' '.$anneeJ.' - ';
    list($anneeJ,$moisJ,$jourJ) = sscanf($jour, "%d-%d-%d");
    echo $jourJ.' '.$moisJ.' '.$anneeJ;
    Affiche "09 07 2009 - 9 7 2009"

    Merci pour l'aide. 'fin c'est quand même bizarre qu'un 0 casse tout

  6. #6
    Membre Expert Avatar de darkstar123456
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2008
    Messages
    1 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mars 2008
    Messages : 1 895
    Par défaut
    chez moi ça marche aussi... et si tu as 09 au lieu de 9, c'est normal, car 09 n'est pas vmt considéré comme un entier....

    Sinon, ton code est bien compliqué pour ce que tu veux faire.... je te fais pareil en une ligne....
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    <?php
    // COMMUN
    $jour = "2009-07-09";
    // TON CODE
    $tab_jours = array('Dimanche', 'Lundi', 'Mardi', 'Mercredi', 'Jeudi', 'Vendredi', 'Samedi');
    list($anneeJ, $moisJ, $jourJ) = sscanf($jour, "%d-%d-%d");
    $jourSemaine = $tab_jours[date('w', mktime(0,0,0,$moisJ,$jourJ,$anneeJ))];
    echo $jourSemaine;
    // LE MIEN
    echo date("l", strtotime($jour));
    ?>

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

Discussions similaires

  1. [Dates] Mktime et mysql
    Par furtif1 dans le forum Langage
    Réponses: 1
    Dernier message: 11/04/2007, 22h59
  2. [Dates] mktime addition de mois
    Par linar009 dans le forum Langage
    Réponses: 2
    Dernier message: 30/08/2006, 17h16
  3. Réponses: 5
    Dernier message: 02/07/2006, 20h37
  4. [date]mktime cf php
    Par parsy dans le forum Web
    Réponses: 4
    Dernier message: 18/03/2006, 15h16
  5. [Dates] mktime() et calcul de date
    Par nerick dans le forum Langage
    Réponses: 6
    Dernier message: 09/02/2006, 18h25

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