Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1964 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

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

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

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

n°1231551
rufo
Pas me confondre avec Lycos!
Posté le 26-10-2005 à 14:45:40  profilanswer
 

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.

mood
Publicité
Posté le 26-10-2005 à 14:45:40  profilanswer
 

n°1231587
omega2
Posté le 26-10-2005 à 15:16:30  profilanswer
 

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é)

n°1231638
rufo
Pas me confondre avec Lycos!
Posté le 26-10-2005 à 15:58:59  profilanswer
 

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...

n°1231650
omega2
Posté le 26-10-2005 à 16:15:19  profilanswer
 

Tu vas rire : avec mysql5.0.13 :

Citation :

select week("2003/12/31" )

donne 52 comme résultat. :lol:

n°1231763
rufo
Pas me confondre avec Lycos!
Posté le 26-10-2005 à 18:05:53  profilanswer
 

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 :)

n°1231775
omega2
Posté le 26-10-2005 à 18:13:55  profilanswer
 

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.

n°1232071
leflos5
On est ou on est pas :)
Posté le 27-10-2005 à 00:52:20  profilanswer
 

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 ;)

n°1232170
rufo
Pas me confondre avec Lycos!
Posté le 27-10-2005 à 10:33:22  profilanswer
 

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
n°1232185
omega2
Posté le 27-10-2005 à 10:47:27  profilanswer
 

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. ;)


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

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

 

Sujets relatifs
Date format chaine de caractere[java][debutant] string vers date
dateAdditionner une date à un nbre de jours ouvrés (avec décimale)...
comparaison avec date systèmeaffichage date "à partir d'aujourd'hui" (faites pas attention :p)
Insérer date de naissance[PHP - Mysql] Date du jour - 20 jours = ??
Dossier incrementé avec la date sur ftpconvertion de format de date
Plus de sujets relatifs à : bug dans l'implémentation du N° de semaine d'une date


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR