JeuWeb - Crée ton jeu par navigateur
[Résolu][PHP] Date PHP : numero de la semaine - Version imprimable

+- JeuWeb - Crée ton jeu par navigateur (https://jeuweb.org)
+-- Forum : Discussions, Aide, Ressources... (https://jeuweb.org/forumdisplay.php?fid=38)
+--- Forum : Programmation, infrastructure (https://jeuweb.org/forumdisplay.php?fid=51)
+--- Sujet : [Résolu][PHP] Date PHP : numero de la semaine (/showthread.php?tid=5542)



[Résolu][PHP] Date PHP : numero de la semaine - php_addict - 10-07-2011

Bonjour

voici un petit problème de date en php:

J'utilise le couple Week , Year comme index pour une table MySQL de classement hebdomadaire des points gagnés par les joueurs

Le problème est pour les tout premiers jours de l'année:


+-----------------------------------------+
| JANVIER 2011 |
+-----+-----+-----+-----+-----+-----+-----+
| Lun | Mar | Mer | Jeu | Ven | Sam | Dim |
+-----+-----+-----+-----+-----+-----+-----+
| 27 | 28 | 29 | 30 | 31 | 1 | 2 |
+-----+-----+-----+-----+-----+-----+-----+
| 3 | 4 | 5 | 6 | 7 | 8 | 9 |
+-----+-----+-----+-----+-----+-----+-----+




$date = date('W,Y',mktime(0,0,0,1,1,2011)); // date sous forme: Semaine,annee du 1 janvier 2011
$pieces = explode(",", $date);
$week = $pieces[0]; // week
$year = $pieces[1]; // year

echo 'semaine=' . $week . ' annee=' . $year;
//___________
// AFFICHAGE |
//___________|
//
// semaine=52 annee=2011

donc pour le 1er janvier 2011 cela me dit que c'est la 52eme semaine de 2011 ce qui est faux bien entendu...

comment géreriez vous les index d'une table SQL d'un classement hebdomadaire ?


RE: Date PHP : numero de la semaine - djidi - 10-07-2011

Cela fonctionne avec le paramètre is_dst de mktime() pour l'heure d'hiver à 1.

PS : Pourquoi faire un explode au lieu de deux fois date ?


RE: Date PHP : numero de la semaine - php_addict - 10-07-2011

non ca ne marche pas:

PHP 5.3.0 mktime() lance maintenant une alerte de type E_DEPRECATED si le paramètre is_dst est utilisé.

l'explode c'est par habitude...



RE: Date PHP : numero de la semaine - Bertrand - 10-07-2011

Code :
date('W,o',mktime(0,0,0,1,1,2011));

'W' donne le n° de la semaine par rapport à une norme iso, 'o' va te donner le numéro de l'année par rapport à cette même norme iso (contrairement à 'Y' qui te donne l'année réelle).
Donc sur cet exemple, tu auras la 52ème semaine de l'année 2010, la 1ère semaine de 2011 commençant au Lundi suivant (le 3).
Je ne sais pas si ça correspond exactement à ton besoin, mais au moins ton index sera cohérent.


RE: Date PHP : numero de la semaine - php_addict - 10-07-2011

ah ok...

MAIS si tu fais pour le 1 janvier 2009

Code :
echo date('W,o',mktime(0,0,0,1,1,2009))

cela retourne semaine 1 mais cela ne devrait t il pas être la derniere semaine de 2008

je nage completement

en ISO la semaine commence t elle un lundi ou un dimanche ?


RE: Date PHP : numero de la semaine - Bertrand - 10-07-2011

Intuitivement, j'aurai dit que si Smile
Mais les règles sont les suivantes (wikipédia):
  1. la semaine commence le lundi
  2. les jours de chaque semaine sont numérotés de 1 (un) pour le lundi, à 7 (sept) pour le dimanche
  3. la semaine 1 est celle qui contient le premier jeudi de l'année
Le 1er janvier 2010 étant un vendredi, c'est dans la dernière semaine 2009.
Le 1er janvier 2009 étant un jeudi, c'est dans la 1ère semaine 2009.
...


RE: Date PHP : numero de la semaine - php_addict - 10-07-2011

(10-07-2011, 07:37 PM)Bertrand a écrit : [*]la semaine 1 est celle qui contient le premier jeudi de l'année

ah ok, merci bien! je ne pouvais pas me douter de ca et je n'aurais jamais pensé à chercher ceci sur wikipédia...

Je me demande par pure curiosité pourquoi le jeudi est référent...

ouf me voilà rassuré, encore merci !




RE: [résolu] Date PHP : numero de la semaine - Bertrand - 10-07-2011

Je pense que c'est parce que Jeudi est au milieu de la semaine. L'année qui contient le jeudi a plus de jour (sur la semaine pivot) que celle qui ne l'a pas.
Par ex, pour la semaine entre 2008 et 2009, on a 3 jours en 2008 (Lundi->Mercredi) et 4 en 2009 (Jeudi->Dimanche), et pour celle entre 2009 et 2010, on a 4 jours en 2009 (Lundi->Jeudi) et 3 en 2010 (Vendredi->Dimanche).


RE: [Résolu] Date PHP : numero de la semaine - php_addict - 10-07-2011

et c'est pour cela qu'il peut y avoir 53 semaines alors que la plupart du temps ce n'est que 52

j'aurais appris un truc aujourd'hui Wink