bug dans l'implémentation du N° de semaine d'une date

bug dans l'implémentation du N° de semaine d'une date - PHP - Programmation

Marsh Posté le 26-10-2005 à 14:45:40    

Je suis tombé sur un bug de la fonction date() de PHP concernant le n° de semaine d'une date. En fait, ce bug impacte aussi la fonction WEEK() de MySql.
 
J'ai trouvé l'explication sur ce site : http://www.nmiroz.net/dev/semaines/readme.php
Du reste, j'ai appris comment était calculé ce fameux n° de semaine...
 
Ex:  
31/12/2003 -> fait partie de la semaine n°1 de 2004
31/12/2004 -> fait partie de la semaine n°53 de 2004
 
est-ce-qu'il y a un correctif pour MySql? Merci.

Reply

Marsh Posté le 26-10-2005 à 14:45:40   

Reply

Marsh Posté le 26-10-2005 à 15:16:30    

D'un autre côté, n'est ce pas illogique de dire que le 31/12/2003 fait partie de l'année 2004?
D'ailleur, sur les sites parlant de la norme iso 8601 il n'y a rien écrit interdisant l'utilisation d'une semaine 0 ou d'une semaine suplémentaire. même sur le site iso.org ca n'est pas indiqué comme étant interdit.
Pour ce que je vois, ils respectent bien cette norme vu que la semaine 1 correspond bien à celle indiqué par la norme et que php tout comme mysql comprennent les dates de cette norme. (sauf peut être celle basé sur l'année, le numéro de semaine dans l'année et la numéro de jour dans la semaine. Comme je n'ai pas testé cette notation là je ne sais pas si c'est respecté)

Reply

Marsh Posté le 26-10-2005 à 15:58:59    

je suis d'accord avec toi : que le 31/12/2003 fasse partie de 2004 est bizarre. Perso, ça m'importe peu, pourvu que MySql et Php me donne le même n° de semaine pour une même date et ce n'est pas le cas :(
Php 4.3.8 donne bien la semaine n°1 pour le 31/12/2003 alors que la 4.2.0 donne 53. Quant à MySql, toutes les versions en 3.23.x donnent 53...

Reply

Marsh Posté le 26-10-2005 à 16:15:19    

Tu vas rire : avec mysql5.0.13 :

Citation :

select week("2003/12/31" )

donne 52 comme résultat. :lol:

Reply

Marsh Posté le 26-10-2005 à 18:05:53    

omega2 a écrit :

Tu vas rire : avec mysql5.0.13 :

Citation :

select week("2003/12/31" )

donne 52 comme résultat. :lol:


 
Dans l'ex proposé sur le site que j'ai mentionné dans mon premier post, il arrive à MySql de denner comme n° de semaine pour certaines date 0 :/ Apparemment, ce bug n'a aps l'air d'avoir été corrigé dans les nouvelles versions de MySql...
Du reste, en lisant la doc de MySql, la fonction WEEK admet un 2ième argument : si on doit considérer que la semaine commence un dimanche ou un lundi (0 ou 1). Or la déf de la norme est que la semaine commence un jeudi... dommage, ce paramètre était bien vu :)

Reply

Marsh Posté le 26-10-2005 à 18:13:55    

La norme dit que la semaine commence un lundi, mais que la premiére semaine de l'année est celle contenant le premier jeudi de l'année.
Nuance.

Reply

Marsh Posté le 27-10-2005 à 00:52:20    

ET pour mettre fin au débat de l'alphabétisation, une semaine commence le dimanche :o Ce qui explique l'obscurté pour certains des chiffres choisis dans les langages de prog ;)
 
C'est bizarre php m'a toujours renvoyé les bonnes dates que je cherchais... Faut peut être réfléchir un peu sur la gestion de temps en temps, ça fait pas de mal, je t'assures ;)

Reply

Marsh Posté le 27-10-2005 à 10:33:22    

leflos5 a écrit :

ET pour mettre fin au débat de l'alphabétisation, une semaine commence le dimanche :o Ce qui explique l'obscurté pour certains des chiffres choisis dans les langages de prog ;)
 
C'est bizarre php m'a toujours renvoyé les bonnes dates que je cherchais... Faut peut être réfléchir un peu sur la gestion de temps en temps, ça fait pas de mal, je t'assures ;)


 
la version Php 4.3.8 oui. Mon pb principal n'est pas PHP mais MySQl et pas avec les dates à proporement parler mais avec les n° de semaines affectés aux dates. La semaine qui commence un dimanche, ça dépend du pays il me semble... Parce qu'en France, autant que je sache, le premier jour de la semaine, c'est le lundi...


Message édité par rufo le 27-10-2005 à 10:35:10
Reply

Marsh Posté le 27-10-2005 à 10:47:27    

D'accord avec rufo, aux US, c'est vrai, la semaine commence le dimanche. Dans la pluspart des pays européen, ca commence le lundi.
D'ailleur un week_end (une fin de semaine) qui comprend le dernier jour de la semaine et le premier de la semaine suivante, il fallait bien vivre aux USA pour pondre une idée pareille. ;)
 
D'ailleur si tous les pays étaient d'accord sur le premier jour de la semaine, les programmeurs de programmes comme mysql ne s'emmerderaient pas à mettre cette info comme paramêtre d'une fonction. ;)

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed