OVH Cloud OVH Cloud

numero de semaine du jour

2 réponses
Avatar
BC
Bonjour,
Existe-il une commande permettant de connaître le N° de la semaine du jour.
Merci

2 réponses

Avatar
Artic-C
*Dans son post* # 3f9ce74f$0$13302$
*BC* nous relate :

Bonjour,
Existe-il une commande permettant de connaître le N° de la semaine du
jour.

Merci
bonjour

Et....Huh ????????? je ne comprend pas la question

Avatar
Jean-Claude BELLAMY
BC <collier(at)free.fr> s'est ainsi exprimé:

Existe-il une commande permettant de connaître le N° de la semaine du
jour. Merci
En quel langage ?

Où çà ?
Dans une fenêtre de commandes ?

Voici un VBSCript qui calcule cela :
GETWEEKNUM.VBS
------------ couper ici ------------
NJM=array(0,31,28,31,30,31,30,31,31,30,31,30,31)
set args=wscript.arguments
If args.count=3 then
Jour=args(0)
Mois=args(1)
Annee=args(2)
Else
JourÚy(now)
Mois=Month(now)
Annee=Year(now)
End If
' La convention de numerotation des jours dans la
' semaine est la suivante (en France) :
' 1 : lundi
' 2 : mardi
' ...
' 7 : dimanche
' La convention de numérotation des semaines est la suivante :
' Une semaine commence un lundi, sauf pour le 01/01,
' et dans ce cas :
' - si le 01/01 est un "lundi", "mardi", "mercredi" ou "jeudi",
' la semaine porte le numero "1"
' - si le 01/01 est un "vendredi", "samedi" ou "dimanche",
' la semaine porte le numero "0",
' la semaine "1" commençant le "lundi" suivant le 01/01.
' Cela est du au fait que l'on estime qu'il y a "existence"
' d'une semaine si elle compte au moins 4 jours (> la moitié)

' détermination du n° du jour de la semaine du 1er janvier
' de l'année concernée
NjDebut=(int((annee-1901)/4) + (annee-1901)+2) mod 7
if NjDebut=0 then NjDebut=7
' calcul du n° du jour dans l'année :
' 1 pour le 01/01,
' 365 pour le 31/12 si année non bissextile, ....)}
if (annee mod 4)=0 then NJM(2)) else NJM(2)(
NumJour=jour
for M=1 to Mois-1
NumJour=NumJour+NJM(M)
next
Delta=NumJour-2+NjDebut
if (NjDebut >=5) and (Njdebut<=7) then DeltaÞlta-7
if Delta<0 then NS=0 else NS=int(Delta/7)+1
NJ=(Delta mod 7)+1
If NJ<0 then NJ=NJ+7
wscript.echo Jour & "/" & Mois & "/" & Annee & " = Semaine " _
& NS & " (" & WeekdayName(NJ,false,vbMonday) &")"
------------ couper ici ------------


NB: le calcul des années bissextiles a été simplifié, en ce sens qu'il n'est
valable qu'entre 1901 et 2099, mais je pense que cela sera
suffisant pour un usage "courant" !

------------------------------
Exemples :

H:WSH>Getweeknum
28/10/2003 = Semaine 44 (mardi)
(sans paramètres, donne la date du jour)

H:WSH>Getweeknum 1 1 2000
1/1/2000 = Semaine 0 (samedi)

H:WSH>GetWeeknum 17 2 2000
17/2/2000 = Semaine 7 (jeudi)
(sortie de Windows 2000)

H:WSH>GetWeeknum 20 07 1969
20/07/1969 = Semaine 29 (dimanche)
(Neil Armstrong sur la Lune)

------------------------------
Si c'est pour récupérer uniquement le n° de semaine
(pour d'autres applications), on peut simplifier la dernière ligne
wscript.echo NS

et rediriger la sortie vers un fichier :
getweeknum > numsem.txt

------------------------------
Il est possible aussi de créer une variable d'environnement contenant cette
valeur :

Remplacer la dernière ligne par :
Set Shell=Wscript.CreateObject("WScript.Shell")
Set env=Shell.Environment
env("NumSem")=NS

Ensuite dans n'importe quel programme ou batch, on pourra accéder à la
variable "numsem" :
Exemple :

D:>echo %numsem%
44

--
May the Force be with You!
La Connaissance s'accroît quand on la partage
----------------------------------------------------------
Jean-Claude BELLAMY [MVP] - http://www.bellamyjc.org
*