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 :

Calculs sur les heures


Sujet :

Langage Delphi

  1. #1
    Membre du Club Avatar de ddubois
    Profil pro
    Inscrit en
    Février 2005
    Messages
    111
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 111
    Points : 47
    Points
    47
    Par défaut Calculs sur les heures
    Bonjour,

    Je cherche à obtenir l'heure pleine sans les minutes (ex: 7 pour 7h12) de préférence de facon propre, cad en jouant sur le format Time plutot qu'une extraction du 1er caractère...

    Plus compliquer, je souhaite également attribuer la valeur "1" de 0h01 à midi (matin) puis "2" de 12h01 à minuit (0h00).

    Merci,

    Denis

  2. #2
    Membre expérimenté
    Homme Profil pro
    Ingenieur de recherche - Ecologue
    Inscrit en
    Juin 2003
    Messages
    1 146
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingenieur de recherche - Ecologue

    Informations forums :
    Inscription : Juin 2003
    Messages : 1 146
    Points : 1 412
    Points
    1 412
    Par défaut
    La fonction HourOf fait cela

    plus un petit coup de IF pour obtenir le AM et PM
    Merci d'ajouter un sur les tags qui vous ont aidé

  3. #3
    Membre du Club Avatar de ddubois
    Profil pro
    Inscrit en
    Février 2005
    Messages
    111
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 111
    Points : 47
    Points
    47
    Par défaut
    Merci, c'est ok, j'ai fait :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
      Label1.Caption := IntToStr(HourOf(Now));
    Mais je souhaite obtenir la date sur 12 heures (format US) et non sur 24 heures...

    Denis

  4. #4
    Membre expérimenté
    Homme Profil pro
    Ingenieur de recherche - Ecologue
    Inscrit en
    Juin 2003
    Messages
    1 146
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingenieur de recherche - Ecologue

    Informations forums :
    Inscription : Juin 2003
    Messages : 1 146
    Points : 1 412
    Points
    1 412
    Par défaut
    je ne comprends pas
    Merci d'ajouter un sur les tags qui vous ont aidé

  5. #5
    Membre chevronné

    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2009
    Messages
    935
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Aveyron (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2009
    Messages : 935
    Points : 1 765
    Points
    1 765
    Par défaut
    Citation Envoyé par ddubois Voir le message
    Mais je souhaite obtenir la date sur 12 heures (format US) et non sur 24 heures...
    Et bien, un petit coup de modulo fait l'affaire ...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Label1.Caption := IntToStr(((HourOf(Now)+11) mod 12) +1);
    C'est bien ca que tu cherchais ?

  6. #6
    Membre éclairé Avatar de DOLPat®
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Février 2003
    Messages
    426
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2003
    Messages : 426
    Points : 790
    Points
    790
    Par défaut
    Citation Envoyé par ddubois Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
      Label1.Caption := IntToStr(HourOf(Now));
    Mais je souhaite obtenir la date sur 12 heures (format US) et non sur 24 heures...Denis
    Bonjour

    Pour avoir l'heure sous la forme 12 heures, tu peux utiliser la fonction FormatDateTime sous l'une des 3 formes suivantes:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
      Caption:=FormatDateTime('hh ampm', now)
      Caption:=FormatDateTime('hh am/pm', now)
      Caption:=FormatDateTime('hh a/p', now)
    Pat.
    À +
    Pat.


    Si vous avez trouvé chaussure à votre pied... euh solution à votre problème, n'oubliez pas de clôturer le sujet en le marquant comme:
    ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
    Windows 8.1, Lazarus 1.8.2 SVN 57369 FPC 3.0.4 x86_64-win64-win32/win64

  7. #7
    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
    tout simplement :

    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
    var
      H, M ,S ,Z: word;
      V: integer;
    begin
      DecodeTime(now, H, M, S, Z);
      case H of
        0..11 : V := 1;
        12..23: V := 2;
      end;
      case H of
        0,12 : caption := '12';
        1..11 : caption := format('%.2d',[H]);
        13..23 : caption := format('%.2d';[H-12]);
      end;
    end;
    [ 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!

  8. #8
    Membre éclairé Avatar de DOLPat®
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Février 2003
    Messages
    426
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2003
    Messages : 426
    Points : 790
    Points
    790
    Par défaut
    Citation Envoyé par Dr.Who Voir le message
    tout simplement :

    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
    var
      H, M ,S ,Z: word;
      V: integer;
    begin
      DecodeTime(now, H, M, S, Z);
      case H of
        0..11 : V := 1;
        12..23: V := 2;
      end;
      case H of
        0,12 : caption := '12';
        1..11 : caption := format('%.2d',[H]);
        13..23 : caption := format('%.2d';[H-12]);
      end;
    end;
    Bonjour

    Pourquoi faire simple quand on peut faire compliqué. je ne veux pas polémiquer, mais je crois le code que j'ai mis dans mon message précédant est quand même plus simple. Une seule ligne pour arriver au même résultat...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Caption:=FormatDateTime('hh ampm', now)
    Sauf erreur de ma part, c'est bonnet blanc ou blanc bonnet. Me tromperais-je ?
    À +
    Pat.


    Si vous avez trouvé chaussure à votre pied... euh solution à votre problème, n'oubliez pas de clôturer le sujet en le marquant comme:
    ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
    Windows 8.1, Lazarus 1.8.2 SVN 57369 FPC 3.0.4 x86_64-win64-win32/win64

  9. #9
    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
    C'est différents et similaire.

    tout dépend de ce qu'on cherche a faire. parfois montrer plusieurs façon de faire permet de mieux comprendre une problématique.

    dans ton code par exemple, on ne voit pas de détermination d'une valeur 1 dans la plage 0..11 et 2 dans la plage 12..23.
    Donc tu ne répond pas à la seconde question de notre ami.

    il est vrai que j'ai pris l'habitude d'utiliser decodeTime car j'ai souvent besoin de chaque composantes de temps.

    on aurait pus aussi utiliser le HoursOf de DateUtils puisque seul l'heure nous intéresse.

    on pourrait effectivement remplacer le CASE OF qui détermine le texte de l'heure par ta méthode plus simple et lisible, mais pourquoi refaire un calcul sur le temps déjà effectué par decodeTime? ne demandant plus qu'un petit Format ou IntToStr plutôt qu'un FormatDateTime qui vas ressortir d'une valeur TDateTime la composante Heure au format demandé.

    Les deux méthodes sont bonnes.
    le reste est un choix.
    [ 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!

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

Discussions similaires

  1. calcul sur les heures
    Par bullot27 dans le forum Excel
    Réponses: 17
    Dernier message: 10/05/2015, 11h30
  2. Calcul sur les heures
    Par pauldmsi dans le forum Langage SQL
    Réponses: 2
    Dernier message: 29/08/2013, 16h57
  3. Calcule sur les dates en elévant certaine heures
    Par kfmystik dans le forum Requêtes
    Réponses: 17
    Dernier message: 26/09/2012, 22h01
  4. Calcul sur les heures jour/nuit
    Par scrat57000 dans le forum VBA Access
    Réponses: 7
    Dernier message: 06/05/2007, 14h53
  5. Calcul sur les heures
    Par franfr57 dans le forum Langage
    Réponses: 5
    Dernier message: 20/04/2006, 17h56

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