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 :

Problème de dates avec les semaines ISO pour la semaine à cheval sur deux années


Sujet :

Langage PHP

  1. #1
    Membre éclairé
    Homme Profil pro
    Ingénieur en électrotechnique retraité
    Inscrit en
    Décembre 2008
    Messages
    1 579
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 72
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Ingénieur en électrotechnique retraité

    Informations forums :
    Inscription : Décembre 2008
    Messages : 1 579
    Points : 804
    Points
    804
    Par défaut Problème de dates avec les semaines ISO pour la semaine à cheval sur deux années
    Bonjour,

    J'ai fait plusieurs essais pour calculer la semaine ISO mais pour la semaine actuelle il me renvoie 2014/1 au lieu de 2015/1. J'ai ce problème avec l'objet DateTime mais aussi avec la fonction date().
    Voici mon code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    <?php
    // Variante 1
    var_dump(date('Y/W'));
     
    // Variante 2
    $essai = new DateTime('2015-01-01');
    var_dump($essai->format('Y/W'));
    $essai2 = new DateTime('2014-12-31');
    var_dump($essai2->format('Y/W'));
    ?>
    Dans les deux variantes si le jour est un jour de fin 2014, la date affichée est 2014/1 au lieu de 2015/1. Comment faire pour afficher la bonne semaine?
    J'ai essayé avec setISODate mais je ne connais pas a priori le n° de semaine.

  2. #2
    Modérateur
    Avatar de Bisûnûrs
    Profil pro
    Développeur Web
    Inscrit en
    Janvier 2004
    Messages
    9 868
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Janvier 2004
    Messages : 9 868
    Points : 16 258
    Points
    16 258
    Par défaut
    Tu devrais peut-être essayer avec la fonction mktime().

  3. #3
    Membre éclairé
    Homme Profil pro
    Ingénieur en électrotechnique retraité
    Inscrit en
    Décembre 2008
    Messages
    1 579
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 72
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Ingénieur en électrotechnique retraité

    Informations forums :
    Inscription : Décembre 2008
    Messages : 1 579
    Points : 804
    Points
    804
    Par défaut
    D'une part j'ai essayé et le problème persiste, d'autre part c'est déconseillé un peu partout .

  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
    Points : 44 155
    Points
    44 155
    Par défaut
    Le résultat fourni par PHP est conforme à ce que tu lui demandes : nous sommes en 2014 et en semaine 1.

    Personnellement je fais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    $essai2 = new DateTime('2014-12-31');
    if ($essai2->format('m') == 12 && $essai2->format('W') == 1) {
        $week = ($essai2->format('Y') + 1) . '/01';
    }
    elseif  ($essai2->format('m') == 1 && $essai2->format('W') >= 52) {
    	$week = ($essai2->format('Y') - 1) . '/' . $essai2->format('W');
    }
    else {
        $week = $essai2->format('Y/W');
    }
    echo $week;
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  5. #5
    Membre éclairé
    Homme Profil pro
    Ingénieur en électrotechnique retraité
    Inscrit en
    Décembre 2008
    Messages
    1 579
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 72
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Ingénieur en électrotechnique retraité

    Informations forums :
    Inscription : Décembre 2008
    Messages : 1 579
    Points : 804
    Points
    804
    Par défaut
    C'est super. Merci.

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 15/08/2013, 21h11
  2. Réponses: 6
    Dernier message: 04/08/2010, 15h21
  3. Problème avec les fichiers ".frx" pour les formulaires!
    Par charly75 dans le forum Général VBA
    Réponses: 2
    Dernier message: 19/08/2009, 16h35
  4. Réponses: 1
    Dernier message: 16/08/2009, 01h57
  5. Problème de culture avec les dates
    Par Nixar dans le forum Développement
    Réponses: 3
    Dernier message: 20/08/2008, 20h25

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