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 :

Numéro de la semaine


Sujet :

Langage PHP

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 26
    Par défaut Numéro de la semaine
    Bonjour,

    J'ai un probleme avec la fonction mktime, voici un exemple qui le montre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    <?php
    	echo "2007 ".date('W', mktime(0,0,0,1,1,2007))." <br/>";
    	echo "2008 ".date('W', mktime(0,0,0,1,1,2008))." <br/>";
    	echo "2009 ".date('W', mktime(0,0,0,1,1,2009))." <br/>";
    	echo "2010 ".date('W', mktime(0,0,0,1,1,2010))." <br/>";
    	echo "2011 ".date('W', mktime(0,0,0,1,1,2011))." <br/>";
    	echo "2012 ".date('W', mktime(0,0,0,1,1,2012))." <br/>";
    ?>
    Et voila le résultat :

    2007 01
    2008 01
    2009 01
    2010 53
    2011 52
    2012 52
    L'argument 'W' de la fonction date() permet d'obtenir le numéro de la semaine par rapport a la date donnée. Ici je donne comme date le 1er Janvier de chaque année, donc la fonction date() devrait retourner "1" a chaque fois, mais pour les années supérieures à 2010 le résultat n'est pas bon.

    Quelqu'un a une idée ?

    Merci d'avance

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    La documentation PHP dit : "W donne le numero de la semaine selon la norme ISO-8601"
    La norme ISO-8601 dit "la semaine 1 est la semaine qui a le premier jeudi de l'année"

    Retour de la semaine 1 au 1er janvier prévu pour 2013
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 26
    Par défaut
    Merci sabotage pour ta réponse.
    Effectivement à partir de 2013 c'est bon.
    Donc comment faire pour que date() considere le 1er Janvier 2010 comme le debut de l'année et non la fin de l'année 2009 ?
    ( Je suis pas sur moi meme d'avoir compris ce que je dis ^^ ca m'a embrouillé cette affaire lol )

  4. #4
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Si tu veux des numéros de semaine qui ne respectent pas la norme, il va falloir faire ta propre fonction j'en ai peur.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  5. #5
    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
    Ne suffirait-il pas de regarder quel jour tombe le 1er janvier (date('w')), ainsi, si date('w') < 4 on ajoutera +1 à date('W') (sauf pour la premiere semaine à la quelle on attribuera 1)

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 26
    Par défaut
    Merci pour vos réponses, j'ai réussi à obtenir ce que je voulais.

    Voila ce que j'ai fait :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    if( 
    date("z",mktime(0,0,0,$mois,$jour,$annee)) < 4 AND date("N",mktime(0,0,0,$mois,$jour,$annee)) > 4 )
        $num_semaine=1;
    En gros : si le jour donné est le 1,2 ou 3ème de l'année ET si c'est un vendredi, samedi ou dimanche alors on considère que c'est la premiere semaine.

    ... Mais en écrivant ca je viens de me rendre compte que c'est tres con parceque les 3 premiers jours de l'année sont forcément considéré comme étant dans la premiere semaine ... tant pis ^^

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

Discussions similaires

  1. [VB.NET] Obtenir le numéro de la semaine d'une date
    Par alain&&thomas dans le forum Windows Forms
    Réponses: 9
    Dernier message: 07/09/2009, 18h54
  2. [DATES] Règles pour le numéro de la semaine
    Par kirgan dans le forum Access
    Réponses: 7
    Dernier message: 28/04/2006, 10h46
  3. Numéro de la semaine selon la norme ISO
    Par steelidol dans le forum MS SQL Server
    Réponses: 5
    Dernier message: 02/02/2006, 16h05
  4. Comment récupérer le numéro de la semaine ?
    Par claude dans le forum Langage
    Réponses: 7
    Dernier message: 25/06/2004, 16h06
  5. [C++ - MFC] numéro de la semaine en cours...?
    Par Gothico dans le forum MFC
    Réponses: 10
    Dernier message: 18/11/2003, 15h31

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