PC SOFT

FOROS PROFESIONALES
WINDEVWEBDEV y WINDEV Mobile

Inicio → WINDEV 2025 → Fonction début de semaine
Fonction début de semaine
Iniciado por dominique.piret, 26,nov. 2004 15:30 - 6 respuestas
Publicado el 26,noviembre 2004 - 15:30
Bonjour,
Existe il une fonction qui donne directement la date de début (ou de fin) de semaine (ou de mois ou d'année) en fonction d'une date donnée ?
C'est possible en calculant avec le numéro du jour mais ce serait + facile s'il y avait une fonction toute faite
Merci à tous
Dominique
Publicado el 27,noviembre 2004 - 00:29
Bonjour,

de mémoire, je pense que dans la dernière LST 57 ou 58, il y a un composant
qui te fait tout ça. (Premier jour de la semaine, du mois...)

Cdlt,

Stéphane

"DomiPi" <dominique.piret@tiscali.be> a écrit dans le message de news:
41a72630$1@news.pcsoft.fr...

Bonjour,
Existe il une fonction qui donne directement la date de début (ou de fin)

de semaine (ou de mois ou d'année) en fonction d'une date donnée ?
> C'est possible en calculant avec le numéro du jour mais ce serait + facile
s'il y avait une fonction toute faite
Merci à tous
Dominique

Publicado el 27,noviembre 2004 - 14:48
"DomiPi" <dominique.piret@tiscali.be> a écrit dans le message de
news:41a72630$1@news.pcsoft.fr...

Bonjour,
Existe il une fonction qui donne directement la date de début (ou de fin)

de semaine (ou de mois ou d'année) en fonction d'une date donnée ?
> C'est possible en calculant avec le numéro du jour mais ce serait + facile
s'il y avait une fonction toute faite
Merci à tous
Dominique

==================================
Voici un exemple simple pour trouver la date de début et
de fin de semaine d'une date

Lundi,Dim,MaDate sont des Dates="20041201"
MaDate..Jour-=DateVersJour(MaDate)-1; Lundi=MaDate
MaDate..Jour+=6; Dim=MaDate
Trace(Lundi,Dim) // pour tester les résultats

Réal Phil
Publicado el 27,noviembre 2004 - 14:51
> Existe il une fonction qui donne directement la date de début (ou de fin)
de semaine (ou de mois ou d'année) en fonction d'une date donnée ?
C'est possible en calculant avec le numéro du jour mais ce serait + facile

s'il y avait une fonction toute faite

Bonjour,

Il n'y a pas de fonction toute faite, mais vous pouvez très bien en créer
une que vous réemploirez ensuite dans toutes vos applications en adaptant le
code ci dessous :
// Description des paramètres d'entrée/sortie de 'pPremSemaine' :
// Syntaxe :
//pPremSemaine ()
//
// Paramètres :
// Aucun
// Valeur de retour :
// Aucune
// Notes :
// Créez dans une fenêtre un champ de saisie ayant les caractéristiques
suivantes :
// Nom : SaisDate
// Libellé : Entrez une date :
// Type date, masque de saisie <<JJ/MM/AAAA>> valeur retournée <<AAAAMMJJ>>
// Dans le code de sortie du champ vous saisissez l'appel à la procédure :
// pPremSemaine()
// Dans les procédures locales dela fenêtre vous créez la procédure
pPremSemaine() avec le code ci dessous :

PROCEDURE pPremSemaine()

dDate est une Date
dDateLundi est une Date
eJour est un entier
dDatePremier, dDateDernier sont des Dates
dAnneePremier, dAnneeDernier sont des Dates

dDate = SaisDate // SaisDate est le champ de saisie date
dDateLundi = dDate
eJour = EntierVersJour(dDate)
dDateLundi..Jour = dDateLundi..Jour - (eJour - 1)
Info("Le premier jour de la semaine du " + DateVersJourEnLettre(dDate) + " "
+ dDate..Jour + " " + DateVersMoisEnLettre(dDate)...
+ " " + dDate..Année + RC + "Est le " + DateVersJourEnLettre(dDateLundi) + "
" + dDateLundi..Jour...
+ " " + DateVersMoisEnLettre(dDateLundi) + " " + dDateLundi..Année)

dDateDernier = dDate
dDateDernier..Jour = 31 // Donne le dernier jour du mois
dDatePremier= dDate
dDatePremier..Jour = 1 // Donne le premier jour du mois
Info("Le premier jour du mois de " + DateVersMoisEnLettre(dDate) + " " +
dDate..Année + " tombe un "...
+ DateVersJourEnLettre(dDatePremier)...
+ " et le dernier jour est le " + DateVersJourEnLettre(dDateDernier) + " " +
dDateDernier..Jour)

dAnneePremier = dDate
dAnneeDernier = dDate
dAnneePremier..Mois = 1
dAnneePremier..Jour = 1
dAnneeDernier..Mois = 12
dAnneeDernier..Jour = 31

Info("Le premier jour de l'année " + dDatePremier..Année + " tombe un " +
DateVersJourEnLettre(dAnneePremier)...
+ " et le dernier jour de l'année est un " +
DateVersJourEnLettre(dAnneeDernier))
// Fin de la procédure pPremSemaine

Une remarque au passage pour compléter la réponse à votre question, le
premier jour de l'année et d'un mois est toujours le 1er, et le dernier jour
d'une année est toujours le 31 décembre.

Sincères salutations
--
Jean-Claude FLAJOULOT
spetb_no_Spam@tiscali.fr
(otez _no_Spam pour me contacter en privé)
Sécurité Pointage & Biométrie
http://www.sp-et-b.com
Publicado el 27,noviembre 2004 - 16:28
Bonjour,

Il y avait un bug dans le code de mon post précédent, il faut pour un
fonctionnement correct remplacer le code de la procédure pPremSemaine() par
le suivant :

PROCEDURE pPremSemaine()

dDate est une Date
dDateLundi est une Date
dDatePremier, dDateDernier sont des Dates
dAnneePremier, dAnneeDernier sont des Dates
eNumeroSemaine, eAnnee sont des entiers

dDate = SaisDate // SaisDate est le champ de saisie date
dDateLundi = dDate
eAnnee = dDateLundi..Année
eNumeroSemaine = NuméroDeSemaine(dDateLundi)
dDateLundi = fFoncLundi(eNumeroSemaine, eAnnee) // On apelle la fonction
fFoncLundi

Info("Le premier jour de la semaine du " + DateVersJourEnLettre(dDate) + " "
+ dDate..Jour + " " + DateVersMoisEnLettre(dDate)...
+ " " + dDate..Année + RC + "Est le " + DateVersJourEnLettre(dDateLundi) + "
" + dDateLundi..Jour...
+ " " + DateVersMoisEnLettre(dDateLundi) + " " + dDateLundi..Année)

dDateDernier = dDate
dDateDernier..Jour = 31 // Donne le dernier jour du mois
dDatePremier= dDate
dDatePremier..Jour = 1 // Donne le premier jour du mois
Info("Le premier jour du mois de " + DateVersMoisEnLettre(dDate) + " " +
dDate..Année + " tombe un "...
+ DateVersJourEnLettre(dDatePremier)...
+ " et le dernier jour est le " + DateVersJourEnLettre(dDateDernier) + " " +
dDateDernier..Jour)

dAnneePremier = dDate
dAnneeDernier = dDate
dAnneePremier..Mois = 1
dAnneePremier..Jour = 1
dAnneeDernier..Mois = 12
dAnneeDernier..Jour = 31

Info("Le premier jour de l'année " + dDatePremier..Année + " tombe un " +
DateVersJourEnLettre(dAnneePremier)...
+ " et le dernier jour de l'année est un " +
DateVersJourEnLettre(dAnneeDernier))
// Fin de pPremSemaine()

et rajouter la fonction suivante :

FONCTION fFoncLundi(eNumeroSemaine, eAnnee)

cPremierJour est une chaîne = eAnnee + "0101"
ePremierJour est un entier = EntierVersJour(DateVersEntier(cPremierJour))
eDebutSemaine est un entier
SI ePremierJour > 4 ALORS
eDebutSemaine = ((eNumeroSemaine * 7) - 6) + (7 - ePremierJour + 1)
SINON
eDebutSemaine = ((eNumeroSemaine * 7) - 6) - (ePremierJour - 1)
FIN
RENVOYER EntierVersDate(eDebutSemaine + DateVersEntier(cPremierJour) - 1)
// Fin de fFoncLundi

Sincères salutations
--
Jean-Claude FLAJOULOT
spetb_no_Spam@tiscali.fr
(otez _no_Spam pour me contacter en privé)
Sécurité Pointage & Biométrie
http://www.sp-et-b.com
Publicado el 27,noviembre 2004 - 23:33
"DomiPi" <dominique.piret@tiscali.be> a écrit dans le message de
news:41a72630$1@news.pcsoft.fr...

Bonjour,
Existe il une fonction qui donne directement la date de début (ou de fin)

de semaine (ou de mois ou d'année) en fonction d'une date donnée ?
> C'est possible en calculant avec le numéro du jour mais ce serait + facile
s'il y avait une fonction toute faite
Merci à tous
Dominique

==================================
Voici un exemple simple pour trouver la date de début et
de fin de semaine d'une date

Lundi,Dim,MaDate sont des Dates="20041201"
MaDate..Jour-=DateVersJour(MaDate)-1; Lundi=MaDate
MaDate..Jour+=6; Dim=MaDate
Trace(Lundi,Dim) // pour tester les résultats

Réal Phil
Publicado el 29,noviembre 2004 - 10:39
Merci pour toutes vos réponses,
C'est vrai que date début et fin d'année, c'est simple !
Mais j'ai l'habitude du C et là les dates sont un long en secondes
c'est donc mois évident
Bonne smaine à tous