Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
988 connectés 

  FORUM HardWare.fr
  Programmation
  Delphi/Pascal

  dernier jour du mois / nombre de jours dans le mois

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

dernier jour du mois / nombre de jours dans le mois

n°1656443
tantemerde
c'est pas faux
Posté le 11-12-2007 à 11:49:22  profilanswer
 

Salut à tous !
 
Le dernier jour du mois ce n'est pas seulement le jour de la paye, c'est aussi un fichu nombre qui varie selon les mois et les années, entre 28, 29, 30 et 31.
Je cherche donc une fonction Delphi qui prendrait en entrée un TDate ou un TDateTime, et qui me renverrait un entier ou un TDate ou un TDateTime contenant le dernier jour du mois ou le nombre de jours du mois.
L'un de vous aurait ce genre d'infos ?
(la fonction de Recherche ne me donne rien à ce sujet, au revoir les flammers)

mood
Publicité
Posté le 11-12-2007 à 11:49:22  profilanswer
 

n°1656450
tantemerde
c'est pas faux
Posté le 11-12-2007 à 11:54:56  profilanswer
 

Je sais qu'il est possible de le faire par calcul en décomposant la date, en ajoutant un mois puis en retirant un jour, mais je cherche une fonction qui fait ça toute seule.

n°1657164
antp
Super Administrateur
Champion des excuses bidons
Posté le 12-12-2007 à 14:55:09  profilanswer
 

Y a pas de fonction toute faite, mais c'est pas vraiment difficile de calculer le dernier jour du mois :  
 
d := IncMonth(RecodeDay(LaDate, 1)) - 1
 
Pour le nombre de jours du mois il y a DaysInMonth / DaysInAMonth (depuis Delphi 6 - au cas où tu as une plus vieille version...)
 
Ce qui permettrait de faire pour la 1e fonction :
 
d := RecodeDay(DaysInMonth(LaDate))


Message édité par antp le 12-12-2007 à 15:00:33

---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
n°1657279
aldo13000
Posté le 12-12-2007 à 17:00:25  profilanswer
 

Salut ,  
 
Suivant ta version tu peux regarder avec EndOfTheMonth .


---------------

n°1657733
antp
Super Administrateur
Champion des excuses bidons
Posté le 13-12-2007 à 14:23:25  profilanswer
 

Ha mince j'avais pas vu qu'elle existait aussi celle-là [:ddr555]

n°1658002
aldo13000
Posté le 13-12-2007 à 20:36:45  profilanswer
 


Pas grave va .
 
Tu vas  t'en remettre non ?  :D


---------------

n°1659366
tantemerde
c'est pas faux
Posté le 17-12-2007 à 14:28:09  profilanswer
 

Merci de vos réponses :)
 
Malheureusement pour ce projet j'utilise Deplhi 5 et les fonctions citées ci-dessus sont toutes inconnues.
 
J'ai donc codé ma propre fonction, que je copie ici au cas où ça intéresserait d'autres personnes :
 

Code :
  1. {******************************************************************************************}
  2. {*** Cette fonction renvoie le numéro du dernier jour du mois relatif à la date fournie ***}
  3. {******************************************************************************************}
  4. function LastDayOfMonth(d: TDate): integer;
  5. var A,M,J: Word;
  6. begin
  7.    { On incrémente la date reçue d'un mois }
  8.    d := IncMonth(d,1);
  9.    { On décode la date obtenue }
  10.    DecodeDate(d,A,M,J);
  11.    { On réencode la date incrémentée d'un mois, avec un jour à 1 }
  12.    d := EncodeDate(A,M,1);
  13.    { On revient en arrière d'un jour ==> on obtient le dernier jour du mois demandé }
  14.    d := d-1;
  15.    { On décode à nouveau la date obtenue pour récupérer le numéro du jour }
  16.    DecodeDate(d,A,M,J);
  17.    { On renvoie le résultat du calcul }
  18.    result := J;
  19. end;


 
Et tant qu'on y est j'ai aussi écrit une fonction qui renvoie le numéro de la semaine pour la date fournie en paramètre, je partage au cas où :
 

Code :
  1. {***********************************************************************************************}
  2. {*** Cette fonction renvoie le numéro de la semaine dans laquelle se trouve la date fournie. ***}
  3. {***********************************************************************************************}
  4. function TFSRIS01.NumSemaine(d: TDate): integer;
  5. var A,M,J: Word;
  6.     d1: TDate;
  7.     nb: integer;
  8. begin
  9.    { On calcule le nombre de jours qui nous séparent du dimanche suivant }
  10.    nb := 8-DayOfWeek(d);
  11.    if (nb = 7) then nb := 0;
  12.    { On ajout ce nombre à la date fournie pour se positionner sur le dernier jours de la semaine demandée }
  13.    d := d+nb;
  14.    { On décode la date obtenue pour récupérer l'année}
  15.    DecodeDate(d,A,M,J);
  16.    { On vérifie que la date ne se trouve pas dans une zone "charnière" entre deux années}
  17.    if ((M = 1) and ((J-nb) <= 0)) then
  18.    begin // période charnière
  19.       d1 := EncodeDate(A,1,1);
  20.       nb := DayOfWeek(d1);
  21.       if ((nb >= 6) or (nb <= 1)) then
  22.          A := A-1;
  23.    end;
  24.    { On crée une date au premier janvier de l'année demandée }
  25.    d1 := EncodeDate(A,1,1);
  26.    { On calcule le nombre de semaines entières écoulées depuis le 1er janvier }
  27.    nb := Round((d-d1+1)/7);
  28.    { On renvoie le résultat du calcul }
  29.    result := nb;
  30. end;


Message édité par tantemerde le 06-02-2008 à 10:50:30
n°1659458
antp
Super Administrateur
Champion des excuses bidons
Posté le 17-12-2007 à 16:22:30  profilanswer
 

La fonction IncMonth existe dans Delphi 5, c'est plus simple pour ajouter 1 mois ;)
 
Et en alternative du DaysInMonths que j'avais utilisé, on peut faire MonthsDays[IsLeapYear(Annee)][mois];


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Delphi/Pascal

  dernier jour du mois / nombre de jours dans le mois

 

Sujets relatifs
Remplir un grand nombre de comboBox avec une boucle[résolu][Ti-Basic]Compter le nombre de chiffres d'une variable
Calculer la date d'il y a 30 jours en PHPcompter le nombre d'occurrence
erreur code jeu de nombre[SQL] Afficher un certain nombre de donnée dans 1 ligne d'un tableau
[BATCH] Nombre de fichier ??[SQL] Maximum de chaque mois en une requête
Mysqli bind_param sur nombre de paramètres variable[Résolu] explode(): connaitre le nombre de donnée dans une variable
Plus de sujets relatifs à : dernier jour du mois / nombre de jours dans le mois


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR