Le numèro de la semaine - réponse à Tai (avec + de 6 ans de retard...)
François25-Feb-2011/10:05:08+1:00
Bonjour à tous...

Avant-hier soir, je me suis lancé dans des fouilles archéologiques, à la recherche d'un script rebol que j'avais écrit il y a bien longtemps et que je croyais égaré à tout jamais... Ce script contenait l'implémentation de plusieurs fonctions date fort utiles. Je m'étais à l'époque inspiré des fonctions "date & time" offertes pas gnumeric sous linux.
Pensant que je ne possédais plus le script, j'ai commencé par une recherche sur internet, dans l'espoir que mon script avait été archivé quelque part... Finalement, j'ai eu un flash et j'ai retrouvé ce script sur un cd que j'avais gravé il y a quelques années.

Cependant, au cours de ma recherche sur internet, je suis tombé sur la discussion suivante:
http://pl.legoff.free.fr/dotclear/vf/index.php/post/2003/12/26/Le-numero-de-la-semaine
On y parle de mon script date-time.r et un certain Tai pointe ce qui semble être un bug: la fonction week-of-year retourne la valeur 0 pour les tous premiers jours d'une année.

C'est donc avec un certain amusement que je réponds à Tai, plus de 6 après :

Cher Tai,

En fait, il ne s'agit pas d'un bug à proprement parlé, tout au plus d'une implémentation malheureuse (notez l'habile tournure de phrase ).
Lorsque j'ai implémenté cette fonction, je me suis basé sur le comportement de la fonction weeknum de gnumeric sous linux qui retourne 0 pour les premiers jours d'une année.
Cependant, ta remarque est judicieuse dans la mesure où je pense que ce comportement, sans être erroné, est incohérent avec la methode iso (également disponible via le raffinement /iso) qui garantit que la première semaine de l'année est numérotée 1. Je pense qu'il est préférable que toutes les méthodes (/sunday, /monday et /iso) retournent 1 comme numéro de première semaine. Cela a évidemment pour conséquence que la numérotation de la dernière semaine de l'année sera incrémentée de 1 par rapport à l'implémentation initiale.
Hier, j'ai fait quelques tests sous gnumeric linux et windows... et oh! surprise, sous gnumeric/linux, weeknum retourne 0, alors que sous gnumeric/windows, la fonction retourne 1! Par contre SoftMaker Office reourne 1 aussi bien sur linux que sur windows...
Ainsi donc, plus de six ans après ton commentaire, j'ai retrouvé et adapté mon script date-time.r dont tu pourras trouver la dernière version sur le site www.rebol.org.
Enfin, une dernière remarque: je pense que la meilleure méthode pour calculer le numéro de semaine est la méthode ISO (week-of-year/iso) car c'est la seule qui garantit que toutes les semaines sont composées de 7 jours. En effet, avec les méthodes /sunday et /monday, la première semaine de l'année ne comporte souvent que quelques jours (fait un test sur gnumeric pour t'en convaincre).

A bientôt
Didec25-Feb-2011/10:41:48+1:00
Et oui déjà à l'époque, y'avais matière à discussion.
François25-Feb-2011/13:23:36+1:00
Bonjour Didec...

en fait non, il n'y a pas à avoir de discussion...
Les méthodes /sunday et /monday considère que la première semaine d'une année démarre le premier janvier. Ainsi, si le premier janvier est un jeudi, la première semaine comportera 4 jours (si methode monday): jeudi, vendredi, samedi et dimanche.
Exemple:
25/12/1998	52	vendredi, décembre 25, 1998
26/12/1998	52	samedi, décembre 26, 1998
27/12/1998	52	dimanche, décembre 27, 1998
28/12/1998	53	lundi, décembre 28, 1998
29/12/1998	53	mardi, décembre 29, 1998
30/12/1998	53	mercredi, décembre 30, 1998
31/12/1998	53	jeudi, décembre 31, 1998
1/1/1999	1	vendredi, janvier 01, 1999
2/1/1999	1	samedi, janvier 02, 1999
3/1/1999	1	dimanche, janvier 03, 1999
4/1/1999	2	lundi, janvier 04, 1999
5/1/1999	2	mardi, janvier 05, 1999


Par contre la méthode ISO considère que la première semaine de l'année est la semaine qui comporte le plus de jour dans cette année et démarre le lundi. Ainsi, si le lundi est le 31/12, ce lundi appartient à la première semaine de la nouvelle année

Voili voilou
shadwolf15-Mar-2011/3:41:39+1:00
Mieux vaut tard que jamais... et je suis sûr que Tai a bien cru que ce serait jamais!!!

Heu 6 ans ahahahahhahaha a cette epoque là carl nous annonçait le debut de rebol 3.0 qui allait tout changer.

Login required to Post.


Powered by RebelBB and REBOL 2.7.8.4.2