PC SOFT

GRUPOS DE DISCUSSÃO PROFISSIONAL
WINDEVWEBDEV e WINDEV Mobile

Inicio → WINDEV 2024 → Nombre de jours entre 2 dates
Nombre de jours entre 2 dates
Iniciado por guest, jun., 15 2005 11:28 PM - 9 respostas
Publicado em junho, 15 2005 - 11:28 PM
Bonjour,

J'aimerais savoir s'il existe une fonction qui permettrait de calculer le nombre de jours entre 2 dates, en excluant le Dimanche.

Exemple : du Lundi au Dimanche = 6 jours et non pas 7 jours.

D'avance merci
Publicado em junho, 16 2005 - 1:46 AM
Christophe a écrit :
Bonjour,

J'aimerais savoir s'il existe une fonction qui permettrait de calculer le nombre de jours entre 2 dates, en excluant le Dimanche.

Exemple : du Lundi au Dimanche = 6 jours et non pas 7 jours.

D'avance merci

Bonsoir,
DateDifférence() est votre amie.
La suite, à savoir exclure les dimanches et à mettre en relation avec le
nombre de semaine de la période et la position des premires et derniers
dimanches. C'est donc de l'algèbre.

DateDifférence donne le nombre de jours. Si on divise par 7 on a le
nombre de semaines. Le modulo permet de savoir si on a des semaines
entières...

j'ai pas le code sous la main mais c'est un début de piste à creuser.


--
++ R&B
WDForge.org
Publicado em junho, 16 2005 - 10:37 AM
Merci pour la réponse, mais je ne comprends pas trop bien.

Je connais la fonction DateDifférence(), mais je ne vois pas trop l'intérêt de le diviser par 7 pour obtenir la semaine. Sachant que le nombre de jour entre 2 dates peut être de n'importe quel jour et non pas forcément du Lundi au Dimanche.

Mais c'est un début ! héhé

Si quelqu'un d'autre à une idée et/ou un micro application, ça m'arrangerait bien.

D'avance merci.
Publicado em junho, 16 2005 - 12:42 PM
Bonjour

"Christophe" <guest@newsgroup.fr> a écrit dans le message de news:
42b111c9$1@news.pcsoft.fr...
Je connais la fonction DateDifférence(), mais je ne vois pas trop
l'intérêt de le diviser par 7 pour obtenir la semaine. Sachant que le
nombre de jour entre 2 dates peut être de n'importe quel jour et non pas
forcément du Lundi au Dimanche.


ben si, il y a un intérêt !

Va aussi faire un tour du coté de DateVersJours(MaDate)..

Pour le reste, faut réfléchir un peu... :-)

Jean-Louis MOREL
Publicado em junho, 16 2005 - 12:50 PM
Christophe a écrit :
Merci pour la réponse, mais je ne comprends pas trop bien.

Je connais la fonction DateDifférence(), mais je ne vois pas trop l'intérêt de le diviser par 7 pour obtenir la semaine. Sachant que le nombre de jour entre 2 dates peut être de n'importe quel jour et non pas forcément du Lundi au Dimanche.

Mais c'est un début ! héhé

Si quelqu'un d'autre à une idée et/ou un micro application, ça m'arrangerait bien.

D'avance merci.



Bonjour
précision : partieentiere(datedifférence(d1,d2)/7) = Nombre de semaines
dans la période = nombre de dimanches (un par dsemaine non ?) +/- 1 ou 2
selon si les bornes sont des dimanches !!!
Manque juste à travailler ce dernier point !

++ R&B
WDForge.org
Publicado em junho, 16 2005 - 1:19 PM
Salut Christophe

Voici une explication (mode d'emploi) plus profond(e)
-------------------------------------------------------------

Ton calcul doit considérer plusieurs facteurs

1) <Résultat> = DateVersJour(<DateDébut>) => num_jourSemaine

Numéro du jour de la semaine correspondant à la date spécifiée :

1 - Lundi
2 - Mardi
3 - Mercredi
4 - Jeudi
5 - Vendredi
6 - Samedi
7 - Dimanche

2) DateDifférence te donne le nombre de jours => nbr_Jours

Exemple 1 : premier jour vendredi 10 juin, 2. jour Mardi 14 juin = 4 Jours
Exemple 2 : premier jour vendredi 10 juin, 2. jour Mercredi 22 juin = 12 Jours
Exemple 3 : premier jour Lundi 13 10 juin, 2. jour Vendredi 17 juin = 4 Jours

3) Calcule le nombre de semaine (nombre de jours/7) => nbr_Semaines
et le modulo nombre de jours et 7 => nbr_Modulo

Exemple 1 : nombre de semaine = 0 , Modulo = 4
Exemple 2 : nombre de semaine = 1 , Modulo = 5
Exemple 3 : nombre de semaine = 0 , Modulo = 4


4) Détermine s'il y a un débordement de la semaine par rapport à la date de début

additionne le résultat obtenu sous 1) avec le résulat du Modulo,

num_jourSemaine + nbr_Modulo

Si ce résultat est supérieur à 7 il y a débordement de semaine
=> Debordement = 1 sinon Debordement= 0


5) ton calcul final sera donc

nbr_Jours - (nbr_Semaines + Débordement)

Exemple 1 : 4 - ( 0 + 1 ) = 3
Exemple 2 : 12 - ( 1 + 1 ) = 10
Exemple 3 : 4 - ( 0 + 0 ) = 4


J'espère que j'ai été assez clair.

Bon Dev,

@+, JF
Publicado em junho, 16 2005 - 2:08 PM
Voilà, à force de chercher un peu, j'ai la réponse. Voilà quelques lignes qui pourraient servir à quelqu'un :

i est un entier
pour i=dateversjour(datedébut) a dateversjour(datefin)
si i<>7 alors
nbrjour++
fin
fin


Datedébut, datefin et nbrjour sont des champs de saisie.
7 étant le numéro de jour de la semaine 7 = Dimanche.
Remarquer, on pourrait le faire sur les autres jours de la semaine.

Si quelqu'un à une idée pour inclur les jours fériés dans ces quelques lignes, ça pourrait encore m'intéresser.
Publicado em junho, 16 2005 - 2:21 PM
bof comme solution, si on a des dates vraiment tres éloignées cela
risque d'etre long comme boucle

Christophe wrote:
Voilà, à force de chercher un peu, j'ai la réponse. Voilà quelques lignes qui pourraient servir à quelqu'un :

i est un entier
pour i=dateversjour(datedébut) a dateversjour(datefin)
si i<>7 alors
nbrjour++
fin
fin


Datedébut, datefin et nbrjour sont des champs de saisie.
7 étant le numéro de jour de la semaine 7 = Dimanche.
Remarquer, on pourrait le faire sur les autres jours de la semaine.

Si quelqu'un à une idée pour inclur les jours fériés dans ces quelques lignes, ça pourrait encore m'intéresser.


Publicado em junho, 16 2005 - 6:16 PM
Voici un code qui marche bien : (on saisie le debut dans saisie1, la fin
dans saisie2, le résultat s'affiche dans saisie3, et le temps d'execution
dans saisie4) Pour info, du 1er janvier 1900 au 3 janvier 2005, le temps de
traitement fut de 3 centiemes de secondes.

Pour les jours ferié, il te faut faire un fichier des feriés, et checker
pour chaque jour. Pour le fichier des feriés, regarde dans l'exemple
wd_planning, il se sert d'un truc similaire.

TpsDep est un entier=HeureVersEntier(HeureSys())
TmpDate est un entier=DateVersEntier(Saisie1)
DateFin est un entier=DateVersEntier(Saisie2)

NbJour est un entier = 0

TANTQUE TmpDate<=DateFin
SI EntierVersJour(TmpDate)<>7 ALORS
NbJour++
FIN
TmpDate++
FIN

Saisie3 = NbJour
TpsFin est un entier=HeureVersEntier(HeureSys())

Saisie4 = EntierVersHeure(TpsFin-TpsDep)

"Christophe" <guest@newsgroup.fr> a écrit dans le message de news:
42b07515$1@news.pcsoft.fr...
Bonjour,

J'aimerais savoir s'il existe une fonction qui permettrait de calculer le

nombre de jours entre 2 dates, en excluant le Dimanche.

Exemple : du Lundi au Dimanche = 6 jours et non pas 7 jours.

D'avance merci
Publicado em junho, 16 2005 - 11:36 PM
Merci pour vos aides.

C'est super sympas !!!