*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
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 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 *
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 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
Jean-Claude.Bellamy@wanadoo.fr * JC.Bellamy@free.fr
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 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 *