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] Transformer une date


Sujet :

Langage PHP

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    36
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 36
    Points : 24
    Points
    24
    Par défaut [Dates] Transformer une date
    Bonjour à tous,
    Voila mon souci: je voudrais obtenir le numéro du mois seulement à partir du numéro de semaine et de l'année. Par exemple, je passe en argument la semaine 35 de l'année 2006 et le code doit me retourner le mois numéro 8 (la semaine 35 faisant partie du mois d'Août). A force de trafiquer les dates je m'y perds! Donc merci de m'aider

  2. #2
    Membre chevronné Avatar de Nemesys
    Profil pro
    Étudiant
    Inscrit en
    Mars 2006
    Messages
    1 895
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 895
    Points : 2 100
    Points
    2 100
    Par défaut
    Pourquoi tu n'utilise pas une fonction date avec le timestamp en php ?

  3. #3
    Invité
    Invité(e)
    Par défaut
    >> google : recherche avec les mots mktime et date

    moi je ferais ça
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $mois= date('m', mktime( 0, 0, 0, 0, 35*7, 2006) );
    explication du mktime :
    les 4 premiers 0 correspondent à lheure minute seconde mois
    35*7 = 7 jours de la semaine * 35 semaines
    2006 c'est lannée (tu peux mettre 0 aussi)

    le resultat sera 08

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    36
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 36
    Points : 24
    Points
    24
    Par défaut
    ce code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $mois= date('m', mktime( 0, 0, 0, 0, 35*7, 2006) );
    est exactement celui que j'avais utilisé en premier.
    Mais il ne fonctionne pas toujours correctement. Par exemple, si je passe la semaine 1 au lieu de la semaine 35
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $mois= date('m', mktime( 0, 0, 0, 0, 1*7, 2006) );
    bizarrement,il me retourne le mois 12 au lieu du mois 1 !

  5. #5
    Invité
    Invité(e)
    Par défaut
    c'est normal car ça te renvoie le mois a laquelle debute la semaine donc decembre

    le 1 janvier 2006 est tombé un dimanche donc la semaine a debuté en decembre

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    36
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 36
    Points : 24
    Points
    24
    Par défaut
    Non, c'est pas normal car si je met comme paramètre la semaine 2, il me renvoie également le mois 12! Or, la semaine 2 de l'année 2006 ne commence pas en décembre 2005...

  7. #7
    Invité
    Invité(e)
    Par défaut
    nous vivons dans un monde paralelle
    tu as raison javais pas tilté sur la semaine 2 jaurais du verifier avant de poster

  8. #8
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    36
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 36
    Points : 24
    Points
    24
    Par défaut
    C'est pas grave!
    En tout cas, je comprends pas pourquoi ca nous renvoie une mauvaise valeur ! Voila pourquoi j'avais abandonné ce code.
    Donc si quelqu'un a une idée...

  9. #9
    Membre expérimenté

    Profil pro
    Inscrit en
    Août 2002
    Messages
    1 060
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 1 060
    Points : 1 357
    Points
    1 357
    Par défaut
    Bonjour,

    Tout d'abord, une petite rectification : la semaine N°1 de l'année 2006 commence le lundi 2 janvier, car la 1ère semaine d'une année est celle qui contient le 1er jeudi de janvier (norme ISO 8601).

    D'autre part, la semaine 35 ne peut pas te retourner un N° de mois unique dans la mesure où elle est, comme beaucoup d'autres, à cheval sur 2 mois (août et septembre).

    Ensuite, pour ton pb, essaie ce code :
    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
     
    <?php
    	$annee = 2006;
    	$timestampUnJour = 86400;
    	$timestampJourAn = mktime(0, 0, 0, 1, 1, $annee);
    	$semaineJourAn = date('W', $timestampJourAn);
    	$semaine = 1;
    	while ($semaine < 53)
    	{
    		$timestampNbJour = ($semaineJourAn >= 52) ? $semaine * 7 * $timestampUnJour : ($semaine - 1) * 7 * $timestampUnJour;
    		$mois = date('m', $timestampJourAn + $timestampNbJour);	
    		$jour = date('w', $timestampJourAn + $timestampNbJour);
    		$ecart = ($jour == 0) ? 6 : $jour - 1;
    		$debut = ($timestampJourAn + $timestampNbJour) - ($timestampUnJour * $ecart);
    		$fin = $debut + ($timestampUnJour * 6);
    		echo 'année ' . $annee . ' semaine N° ' . $semaine . ' du ' . date('d/m/Y', $debut) . ' au ' . date('d/m/Y', $fin) . '<br>';
    		$semaine ++;
    	}
    ?>

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

Discussions similaires

  1. [DeskI XiR2] Comparaison d'une valeur à une date et à une date relative
    Par courti01 dans le forum Débuter
    Réponses: 1
    Dernier message: 07/11/2010, 21h39
  2. transformer une date utc en date locale
    Par shaun_the_sheep dans le forum Général Java
    Réponses: 3
    Dernier message: 17/06/2010, 08h57
  3. Transformer une date Linux en date Mysql
    Par marsuwhite dans le forum Langage
    Réponses: 2
    Dernier message: 06/03/2009, 18h13
  4. [Dates] Transformer une date en quantièmes
    Par Commodore dans le forum Langage
    Réponses: 6
    Dernier message: 24/08/2006, 17h07
  5. [Dates] transformer une date
    Par maximenet dans le forum Langage
    Réponses: 6
    Dernier message: 13/07/2006, 09h45

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