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

Langage Delphi Discussion :

nombre exact de mois entre deux dates calendaires?


Sujet :

Langage Delphi

  1. #21
    Expert éminent sénior
    Avatar de Cl@udius
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2006
    Messages
    4 878
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 4 878
    Points : 10 008
    Points
    10 008
    Par défaut
    Salut

    Et comme ça ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    var
      TotalJours, NbAnnees, NbMois, NbJours: Integer;
    begin
      TotalJours := Trunc(DateTimePicker2.Date) - Trunc(DateTimePicker1.Date) + 1;
      NbAnnees := TotalJours div 360;
      NbMois := (TotalJours mod 360) div 30;
      NbJours := TotalJours - (NbAnnees * 360) - (NbMois * 30);
     
      ShowMessage('Total Jours: ' + IntToStr(TotalJours) + #13#10 +
        'Années: ' + IntToStr(NbAnnees) + #13#10 +
        'Mois: ' + IntToStr(NbMois) + #13#10 +
        'Jours: ' + IntToStr(NbJours));
    end;
    @+ Claudius

  2. #22
    Membre chevronné

    Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2002
    Messages
    1 289
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Août 2002
    Messages : 1 289
    Points : 1 940
    Points
    1 940
    Par défaut
    Et en rajoutant ça?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    nbremois :=  nbremois + nbrejrs div 30;
    nbrejrs :=  nbrejrs mod 30;
    nbrean :=  nbrean + nbremois div 12;
    nbremois :=  nbremois mod 12;
    Delphi 7/XE2/XE3
    C#
    Oracle 9i à 12c
    SQL Server 2008 à 2022

  3. #23
    Membre régulier
    Inscrit en
    Juillet 2005
    Messages
    478
    Détails du profil
    Informations personnelles :
    Âge : 45

    Informations forums :
    Inscription : Juillet 2005
    Messages : 478
    Points : 89
    Points
    89
    Par défaut
    Citation Envoyé par Cl@udius Voir le message
    Salut

    Et comme ça ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    var
      TotalJours, NbAnnees, NbMois, NbJours: Integer;
    begin
      TotalJours := Trunc(DateTimePicker2.Date) - Trunc(DateTimePicker1.Date) + 1;
      NbAnnees := TotalJours div 360;
      NbMois := (TotalJours mod 360) div 30;
      NbJours := TotalJours - (NbAnnees * 360) - (NbMois * 30);
     
      ShowMessage('Total Jours: ' + IntToStr(TotalJours) + #13#10 +
        'Années: ' + IntToStr(NbAnnees) + #13#10 +
        'Mois: ' + IntToStr(NbMois) + #13#10 +
        'Jours: ' + IntToStr(NbJours));
    end;
    @+ Claudius
    oui c'est ca mais:
    il me donne le nombre de jours faut, j'ai introduit date_debut:02/05/2002 et date_fin:06/04/2002, le resultats qu'il me donne c'est :340 jours,0 année, 11 mois, 10 jours
    mais le resultats exacte
    c'est 10 mois et 36 jours----->11 mois et 6 jours (si je prends le mois est 30 jours)

  4. #24
    Expert éminent sénior
    Avatar de Cl@udius
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2006
    Messages
    4 878
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 4 878
    Points : 10 008
    Points
    10 008
    Par défaut
    Citation Envoyé par dj_techno Voir le message
    mais le resultats exacte
    c'est 10 mois et 36 jours
    Je n'arrive pas à comprendre comment tu arrives à ce résultat.

    Nous sommes d'accord, il y a bien 340 jours sur cet intervalle de temps ?

  5. #25
    Membre émérite Avatar de edam
    Homme Profil pro
    Développeur Delphi/c++/Omnis
    Inscrit en
    Décembre 2003
    Messages
    1 894
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur Delphi/c++/Omnis
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 894
    Points : 2 770
    Points
    2 770
    Par défaut
    une copy collez de decodedatetime de delphi 6
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    function DecodeDateFully(const DateTime: TDateTime; var Year, Month, Day, DOW: Word): Boolean;
    const
      D1 = 365;
      D4 = D1 * 4 + 1;
      D100 = D4 * 25 - 1;
      D400 = D100 * 4 + 1;
    var
      Y, M, D, I: Word;
      T: Integer;
      DayTable: PDayTable;
    begin
      T := DateTimeToTimeStamp(DateTime).Date;
      if T <= 0 then
      begin
        Year := 0;
        Month := 0;
        Day := 0;
        DOW := 0;
        Result := False;
      end else
      begin
        DOW := T mod 7 + 1;
        Dec(T);
        Y := 1;
        while T >= D400 do
        begin
          Dec(T, D400);
          Inc(Y, 400);
        end;
        DivMod(T, D100, I, D);
        if I = 4 then
        begin
          Dec(I);
          Inc(D, D100);
        end;
        Inc(Y, I * 100);
        DivMod(D, D4, I, D);
        Inc(Y, I * 4);
        DivMod(D, D1, I, D);
        if I = 4 then
        begin
          Dec(I);
          Inc(D, D1);
        end;
        Inc(Y, I);
        Result := IsLeapYear(Y);
        DayTable := @MonthDays[Result];
        M := 1;
        while True do
        begin
          I := DayTable^[M];
          if D < I then Break;
          Dec(D, I);
          Inc(M);
        end;
        Year := Y;
        Month := M;
        Day := D + 1;
      end;
    end;

    [Edit]
    DecodeDateFully, fonction

    Voir aussi

    Renvoie les valeurs Année, Mois, Jour et Jour de la semaine d'une valeur TDateTime.

    Unité

    SysUtils

    Catégorie

    routines date/heure

    function DecodeDateFully(const DateTime: TDateTime; var Year, Month, Day,

    DOW: Word): Boolean;

    Description

    La procédure DecodeDateFully sépare la valeur spécifiée par le paramètre Date en valeurs Année, Mois, Jour et Jour de la semaine. Si Année est une année bissextile, la valeur renvoyée pour la fonction est True*; sinon, la valeur renvoyée est False. Si la valeur TDateTime donnée est une année négative (BC), les paramètres renvoyés sont tous initialisés à zéro.
    PAS DE DESTIN, C'EST CE QUE NOUS FAISONS

Discussions similaires

  1. [SQL] Calcul du nombre de mois entre deux dates
    Par Lolie11 dans le forum Langage SQL
    Réponses: 7
    Dernier message: 09/03/2009, 11h46
  2. Récupérer le nombre de mois entre deux dates
    Par winow dans le forum C++Builder
    Réponses: 2
    Dernier message: 23/08/2008, 23h17
  3. Différence en nombre de mois entre deux dates
    Par seblo_scoqi dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 11/05/2007, 12h26
  4. [Dates] nombre de mois entre deux dates
    Par Mat_DZ dans le forum Langage
    Réponses: 14
    Dernier message: 23/11/2006, 16h10
  5. Nombre de mois entre deux dates
    Par boulaxx dans le forum Collection et Stream
    Réponses: 3
    Dernier message: 14/09/2006, 15h22

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