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 :

Date , Numero de semaine


Sujet :

Langage PHP

  1. #1
    Membre émérite Avatar de SirDarken
    Profil pro
    Développeur Web
    Inscrit en
    Février 2004
    Messages
    897
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Services de proximité

    Informations forums :
    Inscription : Février 2004
    Messages : 897
    Points : 2 276
    Points
    2 276
    Par défaut Date , Numero de semaine
    Bonjour à tous,

    Je suis devant un souci assez étrange pour moi.
    J'ai récupéré la maintenance d'une appli de gestion d'horaire par semaine, et tout allez bien jusqua cette année en faite.

    le souci est que j'ai perdu une semaine.
    Aujourd'hui lorsque que j'appel date('W'), php me répond 12, alors que nous sommes en semaine 13 et non 12.
    Avez-vous une solution pour que je tombe sur la bonne semaine ?

    Voici un bout de code qui génère les semaines:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    if (isset($_GET['s'])){
    		$semaine=$_GET['s'];
    		$annee=$_GET['a'];
    	} 
    	else if (isset($_GET['d'])) {
    		$semaine=date('W',strtotime($_GET['d']));	
    		$annee=date('Y',strtotime($_GET['d']));
    	}
    	else {
    		$semaine=date('W');	
    		$annee=date('Y');
    	}
    Bon c'est recalculé X fois dans le code, mais voila l'idée de départ, et donc comment puis-je avoir la bonne semaine ?

  2. #2
    Membre actif
    Profil pro
    Inscrit en
    Février 2009
    Messages
    278
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Février 2009
    Messages : 278
    Points : 284
    Points
    284
    Par défaut
    J'aurais fais comme toi avec date('W'). Bizarre! SInon j'ai trouvé ça sur le net :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $num_semaine = strftime("%U") ;
    Je peux pas tester mais tente tjr!

  3. #3
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Points : 16 372
    Points
    16 372
    Par défaut
    Sur mon calendrier, nous sommes bien la semaine 12...

  4. #4
    Membre actif
    Profil pro
    Inscrit en
    Février 2009
    Messages
    278
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Février 2009
    Messages : 278
    Points : 284
    Points
    284
    Par défaut
    Idem semaine 12 j'avais pas vérifié!

  5. #5
    Membre émérite Avatar de SirDarken
    Profil pro
    Développeur Web
    Inscrit en
    Février 2004
    Messages
    897
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Services de proximité

    Informations forums :
    Inscription : Février 2004
    Messages : 897
    Points : 2 276
    Points
    2 276
    Par défaut
    Pareil cela donne 12

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    echo date('W',strtotime('2010-03-24'));
    echo strftime("%W",strtotime('2010-03-24'));
    echo strftime("%U");
    Les trois là donne 12 au lieu de 13, c'est à devenir fou.

  6. #6
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Points : 16 372
    Points
    16 372
    Par défaut
    Je crois que c'est ton calendrier qui est détraqué SirDarken, parce que pour nous c'est php qui a raison.

  7. #7
    Membre actif
    Profil pro
    Inscrit en
    Février 2009
    Messages
    278
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Février 2009
    Messages : 278
    Points : 284
    Points
    284
    Par défaut
    Citation Envoyé par SirDarken Voir le message
    Pareil cela donne 12

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    echo date('W',strtotime('2010-03-24'));
    echo strftime("%W",strtotime('2010-03-24'));
    echo strftime("%U");
    Les trois là donne 12 au lieu de 13, c'est à devenir fou.
    Oui mais nous sommes effectivement en semaine 12 c'est ce qu'on te dit

  8. #8
    Membre émérite Avatar de SirDarken
    Profil pro
    Développeur Web
    Inscrit en
    Février 2004
    Messages
    897
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Services de proximité

    Informations forums :
    Inscription : Février 2004
    Messages : 897
    Points : 2 276
    Points
    2 276
    Par défaut
    Hum oui et non:
    http://maliphane.free.fr/Informatiqu...ur_semaine.htm

    Le 24/03/2010 est considéré comme semaine 13 comme sur un agenda papier.
    (Enfin celui du client).

    Au final le numéro de la semaine importe peun du moins de savoir que ce soit la 12 ou la 13.
    Le souci c'est que sur l'appli developpé, la semaine 12 affiche du 15 au 21 Mars.

    Moi mon but c'est donc qu'aujourd'hui j'affiche la semaine du 22 au 28 Mars, qui est la semaine pour le logiciel 13
    (Pour afficher cette semaine voici l'url http://localhost/horaire24-03-2010/h...40&s=13&a=2010 , ou s est la semaine désiré).

    Je sais pas réellement ou ca bug ^^, on m'avait signalé deja ce disfonctionnement au mois de Janvier mais j'avais comme vous trouvé aucun problème.
    Je peux fournir toute la page faite, mais bon vais pas vous faire bosser à ma place quand même :p

  9. #9
    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
    Ce n'est pas un bug, ca depend comment tu comptes les semaines.
    PHP utilise la norme ISO 8601, sa semaine 1 est la première semaine avec un jeudi dedans.
    Ton calendrier doit lui commencer la semaine au premier janvier.

    Mysql par exemple propose 8 façon de compter les semaines.

  10. #10
    Membre émérite Avatar de SirDarken
    Profil pro
    Développeur Web
    Inscrit en
    Février 2004
    Messages
    897
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Services de proximité

    Informations forums :
    Inscription : Février 2004
    Messages : 897
    Points : 2 276
    Points
    2 276
    Par défaut
    Effectivement, je commence à cerné le problème et j'ai une solution, son seul défaut est que je vais devoir recoder toute l'appli au niveau calcule.

    La solution que j'ai prise vient d'un script php de calendrier semaine, qui ce base sur le timestamp du lundi de la semaine en cours, ce qui me trouve une semaine 53 en 2009.
    Voici le code trouvé :
    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
     
    if(isset($_GET["lundi"])){
    		$ts = $_GET["lundi"];
    	}
    	else{
    		$day = (date('w') - 1); //Jour dans la semaine... Lundi = 0
    		$diff = $day * 86400; //Différence en secondes par rapport au lundi
    		$ts = (mktime() - $diff); //On récupère le TimeStamp du lundi
    	}
    	//Initialisation des variables
    	$week = date('W', $ts); //Semaine en cours
    	$luavant = $ts - 604800; //TimeStamp Lundi précédant
    	$luapres = $ts + 604800; //TimeStamp Lundi suivant
     
    //Aprés une simple boucle pour mes journées
    for($i=1;$i<8;$i++){
    //date = date('Y-m-d',$ts);
    $ts += 86400;
    }
    //Et voila
    Donc effectivement je trouve bien la semaine 12 et ce coup avec les bon jours dedans, pour changer de semaine bah j'envoie le timestamp du Lundi d'avant, si j'ai bien suivi le script.

    Je laisse le post sans résolu si quelqu'un trouve une meilleur idée.

Discussions similaires

  1. Date numero semaine Texte en Date numero de semaine date
    Par alexandrebb dans le forum Requêtes et SQL.
    Réponses: 1
    Dernier message: 18/07/2013, 10h05
  2. Réponses: 3
    Dernier message: 07/08/2006, 10h01
  3. Réponses: 4
    Dernier message: 06/06/2006, 16h18
  4. [Dates] Numero de semaine ISO et dates ??
    Par MadCat34 dans le forum Langage
    Réponses: 9
    Dernier message: 19/11/2005, 00h00
  5. Réponses: 10
    Dernier message: 20/09/2005, 15h32

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