IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Delphi Discussion :

Identifier le trimestre d'une date?


Sujet :

Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Inscrit en
    Novembre 2006
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 2
    Par défaut Identifier le trimestre d'une date?
    Bonjour!
    Je suis novice dans la programmation. Depuis très peu, j'ai décidé de m'y mettre. J'ai choisi Delphi sur recommandation d'un ami. Je suis en train de développer une application de base de données : Gestion des avances sur factures... J'ai une commission qui est calculé sur la base du trimestre calendaire indivisible. Ma question : est comment calculer la différence en trimestres entre deux dates? (Sachant qu'Acces offre cette possibilité avec
    DateDiff, y a - t- il quelque chose de similaire dans Delphi?).
    Merci pour votre aide!

  2. #2
    Expert confirmé
    Avatar de Jipété
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    11 145
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 11 145
    Par défaut
    Yep !

    Plein de fonctions de date dans l'unité DateUtils.

    F1 est ton ami, comm' d'hab'.

    Mes 2 cts,
    --
    jp

  3. #3
    Membre éclairé
    Avatar de OutOfRange
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    533
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 533
    Par défaut
    Salut

    A ma connaissance, ce que tu demandes n'est pas précisément disponible dans la pléthore de fonctions dont tu disposes, comme te l'a indiqué jipété, dans l'unité dateutils
    Il va falloir le faire à la mano, ce qui ne devrait pas poser de pb
    Une combinaison de tests à l'aide des fonctions monthof et yearof devrait faire l'affaire

    Allez, je suis dans un bon jour
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    function queltrimestre(jour:TDate):integer;
    begin
      result:=trunc((yearof(jour)-1)*4)
             +(monthof(jour)-1)div 3+1;
    end;
    Cette fonction renvoie, à la manière de la partie entière d'un TDate, le nombre de trimestres depuis le 1er janvier 0, y compris le trimestre en cours...
    Reste plus qu'à faire les comparaisons

  4. #4
    Candidat au Club
    Inscrit en
    Novembre 2006
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 2
    Par défaut Merci!
    Bnonjour!
    Merci pour votre aide! Je vais m'y mettre dès ce soir.
    Abel.

  5. #5
    Membre Expert
    Avatar de LadyWasky
    Femme Profil pro
    Inscrit en
    Juin 2004
    Messages
    2 932
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 55
    Localisation : France, Hauts de Seine (Île de France)

    Informations forums :
    Inscription : Juin 2004
    Messages : 2 932
    Par défaut
    La fonction de OutOfRange est franchement sympa, d'ailleurs on va la mettre dans la prochaine mouture de la FAQ dont voici un aperçu :
    ___________________________________________________________

    Auteur : OutOfRange
    Catégorie : 6.1. Opérations sur les dates/heures

    [QR]Comment calculer le trimestre d'une date ?
    Cette fonction renvoie, à la manière de la partie entière d'un TDate, le nombre de trimestres depuis le 1er janvier de l'an un (1/1/1), y compris le trimestre en cours...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    function QuelTrimestre(jour:TDate):integer;
    begin
      result:=trunc((yearof(jour)-1)*4)
             +(monthof(jour)-1) div 3+1;
    end;
    Le 1/1/1 appartient au trimestre numéro 1.
    Le 6/11/2006 appartient au trimestre numéro 8024.

    A partir de là, il est facile de calculer :
    - Le nombre de trimestre écoulés entre deux dates :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    var DateDebut,DateFin:TDate;
         NombreDeTrimestres:integer;
    begin
      ...
      NombreDeTrimestres:=QuelTrimestre(DateFin)-QuelTrimestre(DateDebut);
    end;
    - Ou le numéro de trimestre calendaire d'une date :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    function Trimestre(jour:TDate):integer;
    begin
      result:=((QuelTrimestre(now)-1) mod 4)+1;
    end;
    Exemple : Le 6/11/2006 appartient au 4ème trimestre de l'année 2006

  6. #6
    Membre éclairé
    Avatar de OutOfRange
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    533
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 533
    Par défaut
    Bonjour

    Citation Envoyé par waskol
    La fonction de OutOfRange est franchement sympa, d'ailleurs on va la mettre dans la prochaine mouture de la FAQ
    Je suis surpris et très flatté de participer à la FAQ de mon site de dév préféré...
    D'habitude je suis plutôt demandeur. Ravi de pouvoir à mon tour apporter une modeste contribution

    J'ai développé il y a peu un agenda je pense assez performant car ceux que j'ai pu glaner ici ou là ne correspondaient pas à mes besoins.

    Je me suis donc pas mal penché sur les pb liés à la gestion des dates.

    Je vais voir si d'autres fonctions ne pourraient pas intéresser les forumeurs

    Bonne prog à toutes et à tous

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Identifier des données actives à une date donnée
    Par laurent7531 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 01/09/2014, 09h29
  2. Réponses: 2
    Dernier message: 11/06/2014, 09h33
  3. obtenir le trimestre d'une date
    Par Robert Sainclair dans le forum VBA Access
    Réponses: 4
    Dernier message: 03/10/2008, 00h15
  4. Réponses: 2
    Dernier message: 03/10/2005, 12h00

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo