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 :

[D7] Connaitre la durée en minutes ou secondes entre 2 dates [FAQ]


Sujet :

Delphi

  1. #1
    Membre du Club
    Inscrit en
    Avril 2005
    Messages
    100
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 100
    Points : 53
    Points
    53
    Par défaut [D7] Connaitre la durée en minutes ou secondes entre 2 dates
    Salut à tous,

    je recherche une fonction (je sais qu'elle existe car je l'ai déjà utilisée il y a un bon moment mais j'arrive plus à remettre la main dessus) qui me permettent d'obtenir le nombre de minutes ou de secondes entre 2 TDateTime.

    Cette fonction doit pouvoir fonctionner si je souhaite connaitre la durée entre 22h du soir et 06h du mat.

    Merci à vous

    Anthony

  2. #2
    Membre éprouvé
    Avatar de neilbgr
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Août 2004
    Messages
    651
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2004
    Messages : 651
    Points : 1 177
    Points
    1 177
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    uses DateUtils;
     
    [...]
     
    begin
      SecondsBetween();
      MinutesBetween();
    end;

  3. #3
    Membre du Club
    Inscrit en
    Avril 2005
    Messages
    100
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 100
    Points : 53
    Points
    53
    Par défaut
    je suis désolé mais cette fonction ne marche pas, car la différences entre 22h du soir et 1 h du mat (par exemple) me renvoie 1260 minutes au lieu de 180.

    cette fonction fait une différence entre 1h et 22h mais moi je souhaiterais pouvoir trouver l'inverse.

    Et avec la même fonction je souhaite également trouver entre 1h et 3h. Avec cette fonction ca le fait mais seulement si nous considérons que nous sommes le même jour.

  4. #4
    Membre éprouvé
    Avatar de neilbgr
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Août 2004
    Messages
    651
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2004
    Messages : 651
    Points : 1 177
    Points
    1 177
    Par défaut
    Désolé à mon tour mais avec ceci :
    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
    uses
      DateUtils;
     
    {$R *.dfm}
     
    procedure TForm1.btn1Click(Sender: TObject);
    var
      vDate1,
      vDate2: TDateTime;
    begin
      vDate1 := EncodeDateTime(2005, 12, 21, 22, 0, 0, 0);
      vDate2 := EncodeDateTime(2005, 12, 22,  1, 0, 0, 0);
      ShowMessage(IntToStr(MinutesBetween(vDate1, vDate2)) + ' min');
      ShowMessage(IntToStr(SecondsBetween(vDate1, vDate2)) + ' secondes');
    end;
    et Delphi 6, j'obtiens :

    180 min
    10800 secondes

  5. #5
    Membre confirmé
    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
    Points : 474
    Points
    474
    Par défaut
    Eh oui !
    C'est logique...
    A mon avis, tu as dû demander à Delphi de calculer le nombre de minutes et secondes entre 2 TTime
    Car si je reprends le code de neilbgr en le modifiant comme suit
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    procedure TForm1.FormActivate(Sender: TObject);
    var
      vDate1,
      vDate2: TTime;
    begin
      vDate1 := EncodeTime(22, 0, 0, 0);
      vDate2 := EncodeTime(1, 0, 0, 0);
      ShowMessage(IntToStr(MinutesBetween(vDate1, vDate2)) + ' min');
      ShowMessage(IntToStr(SecondsBetween(vDate1, vDate2)) + ' secondes');
    end;
    J'obtiens 1260 et 75600 !
    Simplement parce qu'un TTime est avant tout un TDateTime dont la date est par défaut 30/12/1899
    Donc dans le code ci-dessus, vDate1 et vDate2 sont respectivement :
    - le 30/12/1899 à 22 H
    - le 30/12/1899 à 1H
    et la différence 21H soit 1260 minutes ou 75600 secondes

    Bonne prog

  6. #6
    Membre éprouvé
    Avatar de neilbgr
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Août 2004
    Messages
    651
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2004
    Messages : 651
    Points : 1 177
    Points
    1 177
    Par défaut
    Le compte est bon

  7. #7
    Membre du Club
    Inscrit en
    Avril 2005
    Messages
    100
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 100
    Points : 53
    Points
    53
    Par défaut
    oki

    mais je me rappelles d'une fonction (pas du nom malheureusement) qui savait d'elle même que si l'heure finale était inférieure à l'heure initiale, alors cela voulais dire que l'heure finale appartenait au jour suivant. Et donc en rentrant les heures comme défini précédemment il me ressortait la bonne valeur sans avoir à lui rentrer une date précise.

    Vous ne connaissais pas cette p'tite fonction par hasard...!!!

    merci quand même pour votre solution

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

Discussions similaires

  1. [Programmation]Durée en Mois ET Jours entre 2 dates
    Par Shamard dans le forum VBA Access
    Réponses: 5
    Dernier message: 23/04/2007, 18h52
  2. Nombre de minutes de différence entre deux dates
    Par Oberown dans le forum SQL Procédural
    Réponses: 4
    Dernier message: 05/05/2006, 15h41
  3. Réponses: 2
    Dernier message: 08/03/2006, 11h19
  4. Durée en jour, minute et heure entre 2 dates
    Par nora_ora dans le forum Oracle
    Réponses: 7
    Dernier message: 10/08/2005, 22h47

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