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 :

afficher difference entre 2 Tdatetime sous forme jj/mm/a..a hh:mm:ss


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 afficher difference entre 2 Tdatetime sous forme jj/mm/a..a hh:mm:ss
    Bonjour

    Je me perds dans tout ce qui est conversion de date.
    j arrive à afficher la duree (en jour) entre deux dates mais apres pour la passer au format jj/mm/aaaa hh:mm:ss : Impossible !

    j ai bien cherché du coté de EncodeDateTime (http://www.delphibasics.co.uk/RTL.as...EncodeDateTime) mais je ne crois pas que cela soit la bonne piste.
    Je precise que j ai besoin de ce mode de calcul de difference entre les dates car je souhaite calculer une duree moyenne à la fin d un traitement.
    un peu d aide serait la bienvenue.
    d avance merci

    mon code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    date1 := strtodatetime(Ed_date_1.Text);
      date2 := strtodatetime(Ed_date_2.Text);
     
      diff := date2 - date1;
      Ed_diff_date.Text := FloatToStr(diff);
      diff := round(diff * 86400);
      ed_diff_datetime.Text := TimeToStr(diff / 24 / 3600);
    ici TimeToStr(diff / 24 / 3600); ne correspond pas à mes attentes de conversion de Diff

  2. #2
    Modérateur
    Avatar de Rayek
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    5 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Haute Savoie (Rhône Alpes)

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

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 235
    Points : 8 504
    Points
    8 504
    Par défaut
    Dans l'uinité DateUtils il y a plein de fonctions qui permettent de gérer les dates et heures. genre SecondesBetween qui permet de connaitre le nombre de secondes entre deux dates.

  3. #3
    Expert confirmé
    Avatar de popo
    Homme Profil pro
    Analyste programmeur Delphi / C#
    Inscrit en
    Mars 2005
    Messages
    2 730
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Analyste programmeur Delphi / C#
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 2 730
    Points : 5 388
    Points
    5 388
    Par défaut
    Un simple Format sur le résultat de Date2-Date1 ne fonctionnerait-il pas ?

  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
    Citation Envoyé par popo Voir le message
    Un simple Format sur le résultat de Date2-Date1 ne fonctionnerait-il pas ?
    Le pb est que je me retrouve avec un resultat du type 1.57 et que là je ne sais pas comment le formater....

  5. #5
    Modérateur
    Avatar de Rayek
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    5 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Haute Savoie (Rhône Alpes)

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

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 235
    Points : 8 504
    Points
    8 504
    Par défaut
    Un code que j'ai fait il y a pas mal de temps qui retourne formaté heures/minutes/secondes/millisecondes

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    function FormatMS(MilliSecondes: Cardinal): string;
    var
      Hour, Min, Sec: Cardinal;
    begin
      Hour := MilliSecondes div 3600000;
      MilliSecondes := MilliSecondes mod 3600000;
      Min := MilliSecondes div 60000;
      MilliSecondes := MilliSecondes mod 60000;
      Sec := MilliSecondes div 1000;
      MilliSecondes := MilliSecondes mod 1000;
      Result := Format('%.2d:%.2d:%.2d:%.3d', [Hour, Min, Sec, MilliSecondes]);
    end;
    En utilisation

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    MilliSecondes := MiliisecondesBetWeen(Date1, DAte2);
    Showmessage(FormatMS(Millisecondes));

  6. #6
    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

    Essayer d'appliquer un format de Date (jj/mm/aaaa hh:mm) sur une durée n'est pas approprié, car une durée n'est pas une date.

    1,57 est la différence exprimée en jours entre tes deux dates (donc une durée).
    1,57 => 1 jour 13 heures et 40 minutes.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    function FormatDuree(D: Extended): string;
    var
      j, h, m: Integer;
    begin
      j := Trunc(D);
      h := Trunc(Frac(D) * 24);
      m := Trunc(Frac(Frac(D) * 24) * 60);
     
      result := Format('%dj %dh %dmn', [j, h, m]);
    end;
    PS: Y'a peut-être plus simple pour le calcul, mais le principe est là.

    [edit] Te voilà avec deux exemples: celui de Rayek qui travaille avec des millisecondes (Cardinal), ou le mien avec une différence entre deux TDateTime (Double).

    @+

  7. #7
    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 à vous

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

Discussions similaires

  1. afficher le mot de passe sous forme d'étoiles
    Par MarwaMimi dans le forum Android
    Réponses: 2
    Dernier message: 17/03/2014, 01h50
  2. Réponses: 2
    Dernier message: 30/01/2013, 14h57
  3. [CSS 2] est il possible d'afficher avec css une données sous form de code barre
    Par jano_dave dans le forum Mise en page CSS
    Réponses: 4
    Dernier message: 07/05/2009, 16h54
  4. Réponses: 2
    Dernier message: 15/12/2005, 10h15
  5. [Turbo Pascal] Entrée au clavier sous forme ******
    Par Upal dans le forum Turbo Pascal
    Réponses: 12
    Dernier message: 15/02/2003, 14h42

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