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 :

Boucler sur des dates


Sujet :

Delphi

  1. #1
    Membre actif
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    549
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 549
    Points : 226
    Points
    226
    Par défaut Boucler sur des dates
    Bonjour

    Je me re-mets doucement à delphi et souhaiterais savoir s il est possible de boucler sur des dates autrement qu en decomposant ma boucle en jour mois et année
    plus precisement je souhaiterais faire une boucle du 1.1.2000 au 02.01.2001 soit 366 iterrations (par exemple).

    merci pour votre aide


    edit : ajout de l exemple plus explicite...selon moi

  2. #2
    Membre expérimenté

    Homme Profil pro
    Inscrit en
    Mars 2004
    Messages
    897
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2004
    Messages : 897
    Points : 1 561
    Points
    1 561
    Par défaut
    Tout ce qui concerne la manipulation des dates avec Delphi se trouve dans l'unité DateUtils.

    Pout les itérations avec les dates rien de plus simple.

    Exemple 1: Parcourir à partir d'une date les dates futures de 3 jours.

    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
     
    uses
      DateUtils;
    ....
     
    var
      ADate: TDatetime;
      I: integer;
    begin
      ADate := EncodeDate(2001,1,1);
      for I := 1 to 5 do
      begin
        ADate := IncDay(ADate,3);
        ShowMessage(DateToStr(ADate));
      end;
    end;
    Exemple 2 : Parcourir à partir d'une date toutes les dates futures du mois suivant.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    var
      ADate: TDatetime;
      I: integer;
    begin
      ADate := EncodeDate(2001,1,1);
      for I := 1 to 5 do
      begin
        ADate := IncMonth(ADate,1);
        ShowMessage(DateToStr(ADate));
      end;
    end;
    Exemple 3 : A partir d'une date parcourir les dates futures incrémentées d'une semaine et centrées sur le mercredi.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    var
      ADate: TDatetime;
      I: integer;
    begin
      ADate := EncodeDate(2001,1,1);
      for I := 1 to 5 do
      begin
        ADate := IncWeek(ADate,1);
        ADate := StartOfAWeek(YearOf(ADate),WeekOfTheYear(ADate),DayWednesday);
        ShowMessage(DateToStr(ADate));
      end;
    end;
    Et parcourir les jours sur une année complète prenant en compte les années bissextiles.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    var
      ADate: TDatetime;
      I: word;
      ADaysInYear : word;
    begin
      ADate := EncodeDate(2001,1,1);
      ADaysInYear := DaysInAYear(YearOf(ADate));
      for I := 1 to ADaysInYear do
      begin
        ADate := IncDay(ADate,1);
        ShowMessage(DateToStr(ADate));
      end;
    end;
    Un dernier exemple qui n'utilise pas DateUtils.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    var
      ADate: TDatetime;
      I: integer;
    begin
      ADate := EncodeDate(2001,1,1);
      for I := Trunc(ADate) to Trunc(EncodeDate(2001,1,8)) do
      begin
        ADate := ADate + 1;
        ShowMessage(DateToStr(ADate));
      end;
    end;
    Pensez à utiliser les tags dans le titre.
    Avant de poser une question reportez-vous à la FAQ Delphi
    Respectez les règles du forum.

  3. #3
    Membre éprouvé Avatar de Yurck
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2005
    Messages
    682
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 15
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2005
    Messages : 682
    Points : 912
    Points
    912
    Par défaut
    à + ou - 1 près tu dois pouvoir faire

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    Date1 := '1/1/2000';
    Date2 := '2/11/2001'
     
    count := StrToDate(Date2) - StrToDate(Date1);
     
    for i:=0 to count do
    begin
    end;
    Dans le vocabulaire des couturiers seulement, patron est synonyme de modèle.
    Aymond d'Alost

  4. #4
    Membre actif
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    549
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 549
    Points : 226
    Points
    226
    Par défaut
    merci
    je vais donc faire la difference entre la date de deubt et la date de fin et incrementer ma date de depart de 1 jusqu'à atteindre ma date de fin

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

Discussions similaires

  1. analyse "périodes" basées sur des dates.
    Par Yorglaa dans le forum Oracle
    Réponses: 7
    Dernier message: 22/12/2004, 11h39
  2. Boucler sur des champs texte
    Par syl2095 dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 25/11/2004, 16h15
  3. boucler sur des checkboxes
    Par El Saigneur dans le forum Général JavaScript
    Réponses: 8
    Dernier message: 09/10/2004, 08h27
  4. Réponses: 9
    Dernier message: 17/01/2004, 10h51
  5. [VB6] Comment boucler sur des controls d'un form ?
    Par lankviller dans le forum VB 6 et antérieur
    Réponses: 5
    Dernier message: 27/01/2003, 16h29

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