Developpez.com - 4D
X

Choisissez d'abord la catégorieensuite la rubrique :


Trouver le numéro de la semaine

Date de publication : 04/08/05

Par Joël Prince (Technicien Support Technique)
 

Code exemple pour retourner le numéro d'une semaine


Produit : 4D 2004 · Plateforme : Mac & Win


Si vous voulez connaître le numéro de semaine du 1er avril 2453, il suffit d'écrire

      MonNumSemaine:=NumeroDeSemaine (!01/04/2453!)

après avoir recopié la méthode suivante :


   `NumeroDeSemaine(Date)-›Numéro de la semaine
   `Paramètre Type Description
   `Date Date Date dont on veut connaître le numéro de semaine
   `Résultat entier Numéro de la semaine où se trouve la date


C_DATE($1;$NouvelAn)
C_ENTIER($0;$NoJour)
$NouvelAn:=Date("01/01/"+Chaine(Annee de($1)))

   `trouver le premier jour de l'année
$NoJour:=Numéro du jour($NouvelAn)-1
$NoJour:=$NoJour+(7* Num($NoJour=0))

   ` le lundi devient 1er jour et dimanche 7ème
$0:= Ent (($NoJour+($1-$NouvelAn+1)+5)/7)- Ent ($NoJour/5)

   `c'est tout, c'est fini !

Au cas ou   `mais il faut contrôler les semaines bornes

: ($0=0)
   ` ... chercher le n° de semaine du dernier jour de l'année précédente
$0:= NumeroDeSemaine ($NouvelAn-1)
   `qui peut éventuellement renvoyer au cas semaine 53
($0=53) $NouvelAn:= Date ("01/01/"+ Chaine ( Annee de ($1)+1))
   `chercher le n° de semaine du premier jour de l'année suivante
Si (( Numéro du jour ($NouvelAn)›1) (Numéro du jour ($NouvelAn)‹6))
   `si plus petit que vendredi (attention à dimanche =1 ici)
$0:=1
Fin de si   `sinon on garde 53

Fin de cas

   `Note : Attention au nom de cette méthode récursive
   `dont le nom est utilisé par elle-même.
   `Si vous changez le nom, pensez à le faire dans la méthode.


Et si vous vouliez connaître le premier jour de la semaine de l'année 2013 à la 13ème semaine, vous écririez DateDansSemaine (2013;13) après avoir recopié la méthode suivante :

(Notez qu'on peut aussi obtenir le premier jour de la première semaine de l'année 2013 en ne passant que le premier paramètre ou obetnir le premier jeudi de la 13ème semaine de l'année 2013 en passant 5 ou la constante jeudi dans le 3ème paramètre.)


   `DateDansSemaine (Année{;Semaine;Jour})-›Date
   `expl:DateDansSemaine(2013;13;jeudi)
   `Paramètre Type Description
   `Année entier Année de recherche
   `semaine entier semaine de recherche
   `N° du jour entier si on veut un autre jours que le lundi
   `Résultat date date


C_DATE($0;$NouvelAn)
C_ENTIER($1;$2;$3;$NoJour)
$NouvelAn:= Date ("01/01/"+Chaine($1))

   `trouver le premier jour de l'année
$NoJour:= Numéro du jour ($NouvelAn)-1
$NoJour:=$NoJour+(7* Num ($NoJour=0))

   `décalage : le lundi devient 1er jour et dimanche septième
$0:=($NouvelAn-$NoJour+1)+(7* Num ($NoJour›4))

   `Résultat=(premier jour de la semaine du premier de l'an)
   `+(ajouter 7 jours si n°jour vendredi samedi ou dimanche)
Si ( Nombre de paramètres ›1)
   $0:=$0+(($2-1)*7)
Fin de si

   `+(nombre de semaine demandé - une pour la 1ere)
Si ( Nombre de paramètres›2 )
   $0:=$0+$3-2+(7* Num ($3=1))
Fin de si

   `+décalage de jours (1=dimanche, 2=lundi etc)


Ici, aucun contrôle sur les valeurs des paramètres pour une saisie du type
      DateDansSemaine(20130 ;-13 ;420)

On pourrait écrire :


Si (Nombre de parametres›1)
   $0:=$0+(($2-Num($2›0))*7)  `si semaine négative
Fin de si

Si (Nombre de parametres›2)

   Si ($3‹1) | ($3›7)
         `ajout ou retrait du nombre de jour au lundi
      $0:=$0+$3
   Sinon
         `un jour de la semaine valide
      $0:=$0+$3-2+(7*Num($3=1))
   Fin de si

Fin de si



Valid XHTML 1.1!Valid CSS!

Copyright © 2005 4D s.a.. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.

Contacter le responsable de la rubrique 4D