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 :

Problème conversion Heure


Sujet :

Langage Delphi

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Août 2004
    Messages
    149
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Août 2004
    Messages : 149
    Points : 69
    Points
    69
    Par défaut Problème conversion Heure
    Bonjour,

    J'ai un problème avec une fonction qui convertit une heure décimale en format h:m:s.


    T = 62E800 en hexa et 6481920 en décimal (14h4min0sec)

    quand je convertit à l'aide du code ci-dessous, j'ai la variable sec qui est égal à 60. J'ai fais un test (if) pour checker cette variable et le programme n'entre pas dans mon if quand sec est égal à 60.

    Merci de votre aide

    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
     
      res := (StrToInt('$'+T) / 460800);
      h := Int(res);
      min1 := (res-h)*60;
      min := Int(min1);
      sec := (((res-h)*60)-min)*60;
     
      if sec >= 60 then
      begin
        min := min +1;
        sec := sec-60;
      end;
      if min >= 60 then
      begin
        h := h +1;
        min := min - 60;
      end;
      heure := FormatFloat('00',h)+':'+FormatFloat('00',min)+':'+FormatFloat('00'+DecimalSeparator+'00',sec);

  2. #2
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    49
    Détails du profil
    Informations personnelles :
    Âge : 70
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 49
    Points : 51
    Points
    51
    Par défaut
    Pourquoi ne pas utiliser la fonction FormatDateTime ?

  3. #3
    Membre éprouvé
    Avatar de Dr.Who
    Inscrit en
    Septembre 2009
    Messages
    980
    Détails du profil
    Informations personnelles :
    Âge : 45

    Informations forums :
    Inscription : Septembre 2009
    Messages : 980
    Points : 1 294
    Points
    1 294
    Par défaut
    si la base est la seconde :

    pour trouver S, M, H :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    S := T mod 60;
    M := (T div 60) mod 60;
    H := T div 3600
    ;

    pour trouver T :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    T := H*3600 + M*60 + S;

    si la base est la Milliseconde (comme getTickcount par exemple)

    pour trouver Z,S,M,H :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Z := T mod 1000;
    S := (T div 1000) mod 60;
    M := (T div 60000) mod 60;
    H := T div 3600000;
    pour trouver T :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    T := H*3600000 + M * 60000 + S * 1000 + Z;

    si T est de type TTime ou TDateTime :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    var
      H,M,S,Z: word;
    begin
      DecodeTime(T, H, M, S, Z);
    end;
     
    var
      T : TTime;
    begin
      T := EncodeTime(H, M, S, Z);
    end;

    et pour formater :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Caption := Format('%.2d Heure %.2d Min %.2d Sec',[H,M,S]);
    [ Sources et programmes de Dr.Who | FAQ Delphi | FAQ Pascal | Règlement | Contactez l'équipe ]
    Ma messagerie n'est pas la succursale du forum... merci!

  4. #4
    Rédacteur/Modérateur
    Avatar de Andnotor
    Inscrit en
    Septembre 2008
    Messages
    5 744
    Détails du profil
    Informations personnelles :
    Localisation : Autre

    Informations forums :
    Inscription : Septembre 2008
    Messages : 5 744
    Points : 13 303
    Points
    13 303
    Par défaut
    Vodkha,

    Remplace l'ensemble de ton code par ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Heure := TimeToStr(StrToInt('$'+T) /460800 /(24 *60));

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Août 2004
    Messages
    149
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Août 2004
    Messages : 149
    Points : 69
    Points
    69
    Par défaut
    Merci ça fonctionne bien avec cela

    heure := FormatDateTime('hh:mm:ss.zz',StrToInt('$'+T) /460800 /24);

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

Discussions similaires

  1. problème Excell de conversion heures
    Par JPCEC dans le forum Excel
    Réponses: 2
    Dernier message: 27/09/2008, 00h51
  2. [VB]Problème d'heure de travail
    Par AlfiQue dans le forum VB 6 et antérieur
    Réponses: 17
    Dernier message: 18/02/2006, 18h57
  3. Conversion heures minutes en heures centièmes
    Par shaman262 dans le forum Langage SQL
    Réponses: 2
    Dernier message: 24/10/2005, 17h53
  4. [MsSQL 2000]Conversion heure GMT
    Par prophetky dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 30/08/2005, 17h27
  5. Problème conversion date
    Par mat.M dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 30/03/2004, 15h05

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