Attention à la première semaine de 2010

Le
mdnews
Je pense que tout le monde connaît, mais à tout hasard, rappel (je me
suis pris les pieds dedans en testant un truc %) le première semaine
de 2010 n'est pas la semaine 1 mais la semaine 53.
(regardez le calendrier)
La norme ISO 8601 indique que la semaine 1 est celle qui contient le
premier jeudi.

Le 01/01/10 commence un vendredi, la semaine 1 de 2010 commence donc
le 04/01/10

VBScript ne tient pas compte de cette particularité, ce qui peut
rendre faux tous les scripts basés sur le numéro de semaine (ex: log
de sauvegardes)

MsgBox("DatePart("ww", "01-01-2010")) retourne 1 (pas 53)

et tout le reste est donc aussi faux

MsgBox(DatePart("ww", "04-01-2010")) retourne 2 (pas 1)

Vérifiez vos scripts utilisant éventuelmement "ww".
;-)
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
F. Dunoyer
Le #20804351
mdnews a écrit :
Je pense que tout le monde connaît, mais à tout hasard, rappel (je me
suis pris les pieds dedans en testant un truc %) le première semaine
de 2010 n'est pas la semaine 1 mais la semaine 53.
(regardez le calendrier)
La norme ISO 8601 indique que la semaine 1 est celle qui contient le
premier jeudi.

Le 01/01/10 commence un vendredi, la semaine 1 de 2010 commence donc
le 04/01/10

VBScript ne tient pas compte de cette particularité, ce qui peut
rendre faux tous les scripts basés sur le numéro de semaine (ex: log
de sauvegardes)

MsgBox("DatePart("ww", "01-01-2010")) retourne 1 (pas 53)

et tout le reste est donc aussi faux

MsgBox(DatePart("ww", "04-01-2010")) retourne 2 (pas 1)

Vérifiez vos scripts utilisant éventuelmement "ww".
;-)



C'est d'ailleurs déjà visible dans Office (outlook 2007 dans mon cas).
Par defaut si on lui demande d'afficher les numero de semaine, la
semaine du 1/1 est la semaine 1
aie ça ne colle pas avec mon calendrier mural zut !! :)
Heuresement dans outlook on peut lui demander que la premier semaine de
l'année soit la premier semaine de 4 jours

Est ce que ce type de fonction n'existe pas au niveau du vb ?

--
François Dunoyer
Quelques liens pour Windows : http://fds.mvps.org/AdressesInternets.htm
Site perso : http://fds.mvps.org
Blog : http://fds34.spaces.live.com/
Jacques93
Le #20808111
Bonjour mdnews et F. Dunoyer,
Le 20/12/2009 14:39, F. Dunoyer a écrit :
mdnews a écrit :
Je pense que tout le monde connaît, mais à tout hasard, rappel (je me
suis pris les pieds dedans en testant un truc %) le première semaine
de 2010 n'est pas la semaine 1 mais la semaine 53.
(regardez le calendrier)
La norme ISO 8601 indique que la semaine 1 est celle qui contient le
premier jeudi.

Le 01/01/10 commence un vendredi, la semaine 1 de 2010 commence donc
le 04/01/10
VBScript ne tient pas compte de cette particularité, ce qui peut
rendre faux tous les scripts basés sur le numéro de semaine (ex: log
de sauvegardes)

MsgBox("DatePart("ww", "01-01-2010")) retourne 1 (pas 53)

et tout le reste est donc aussi faux

MsgBox(DatePart("ww", "04-01-2010")) retourne 2 (pas 1)

Vérifiez vos scripts utilisant éventuelmement "ww".
;-)



C'est d'ailleurs déjà visible dans Office (outlook 2007 dans mon cas).
Par defaut si on lui demande d'afficher les numero de semaine, la
semaine du 1/1 est la semaine 1
aie ça ne colle pas avec mon calendrier mural zut !! :)
Heuresement dans outlook on peut lui demander que la premier semaine de
l'année soit la premier semaine de 4 jours

Est ce que ce type de fonction n'existe pas au niveau du vb ?




Si, cela existe :

MsgBox DatePart("ww", "01-01-2010", vbUseSystemDayOfWeek,
vbFirstFourDays)

revoie bien 53.

L'argument FirstDayofWeek (le 3ème) peut prendre les valeurs suivantes :

vbUseSystemDayofWeek 0 Utilise les paramètres de l'API NLS.
vbSunday 1 Dimanche (valeur par défaut)
vbMonday 2 Lundi
vbTuesday 3 Mardi
vbWednesday 4 Mercredi
vbThursday 5 Jeudi
vbFriday 6 Vendredi
vbSaturday 7 Samedi


L'argument FirstWeekofYear (le 4ème), qui est celui qui nous intéresse
ici, peut prendre les valeurs suivantes :

vbUseSystem 0 Utiliser l'argument NLS API.
vbFirstJan1 1 Commencer par la semaine du 1er janvier (valeur par
défaut).

vbFirstFourDays 2 Commencer par la première semaine comportant au moins
quatre jours dans l'année nouvelle.

vbFirstFullWeek 3 Commencer par la première semaine complète de l'année.


Si un de ces arguments (ou les deux) ne sont pas indiqués, cela
correspond à utiliser les valeurs par défaut (US)

--

Cordialement,

Jacques.
Publicité
Poster une réponse
Anonyme