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 :

conversion string en date


Sujet :

Langage Delphi

  1. #1
    Membre actif
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    856
    Détails du profil
    Informations personnelles :
    Âge : 59
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 856
    Points : 266
    Points
    266
    Par défaut conversion string en date
    bonjour,


    Est ce qu'il est possible de convertir une variable chaine 'aaaammdd' en variable date sous une forme plus logique dd/mm/aaaa ?


    A+

  2. #2
    Membre chevronné

    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    1 519
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 1 519
    Points : 2 153
    Points
    2 153
    Billets dans le blog
    1
    Par défaut
    Bonjour,

    Pour convertir une chaîne en TDateTime tu peux utiliser la fonction StrToDateTime.

  3. #3
    Membre actif
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    856
    Détails du profil
    Informations personnelles :
    Âge : 59
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 856
    Points : 266
    Points
    266
    Par défaut réponse
    salut,

    oui mais j'ai l'impression que cette fonction ne fonctionne seulement si la chaine contient des séparateurs. Alors que dans mon cas tous ce tient ?


    A+

  4. #4
    Membre chevronné

    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    1 519
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 1 519
    Points : 2 153
    Points
    2 153
    Billets dans le blog
    1
    Par défaut
    En fait la version par défaut utilise les paramètres régionaux de Windows, donc s'attend à recevoir une date au format chaîne identique à celui définit par tes préférences.

    Si tu veux utiliser un format autre, tu dois renseigner un record de type TFormatSettings avec le format souhaité et le passer en paramètre de StrToDateTime.

  5. #5
    Membre expert
    Avatar de e-ric
    Homme Profil pro
    Apprenti chat, bienfaiteur de tritons et autres bestioles
    Inscrit en
    Mars 2002
    Messages
    1 561
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Apprenti chat, bienfaiteur de tritons et autres bestioles

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 561
    Points : 3 955
    Points
    3 955
    Par défaut
    Salut

    Primo, une date au sens de Delphi n'a pas de format intrinsèque, le format est juste une représentation. Rappel : Les dates sont des données binaires plus précisément un nombre de jours depuis une date de référence, ce qui permet une simplification des calculs du type nombre de jours entre deux dates...

    Ton problème est d'une simplicité enfantine, je pense que si tu avais réfléchis un peu plus, tu aurais trouvé. Tu disposes d'une chaîne de 8 caractères, les 4 premiers sont l'année, les deux suivants sont le mois et les deux derniers sont le jour dans le mois. Il te suffit donc de récupérer chacune des composantes (fonction copy), de convertir chacune de ces composantes en type Word et enfin de convertir à l'aide EncodeDate les composantes en une date binaire.

    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
    19
    20
    21
     
    uses SysUtils;
    ....
    procedure AAAAAMMDDToDate(const Value: String): TDateTime;
    begin
      try
       // Notation plus compacte que les explications
       // tout est fait en une seule instruction.
        Result := EncodeDate(
          StrTotInt(Copy(Value, 1, 4), // Année
          StrTotInt(Copy(Value, 5, 2), // mois
          StrTotInt(Copy(Value, 7, 2) // jour
          );
      except
         raise Exception.CreateFmt('Date incorrecte "%s"', [Value]);
      end;
    End;
    ...
     
    // pour l'emploi...
    ShowMessage(DateToStr(AAAAAMMDDToDate('20090330')));
    En espérant t'avoir dépanné.

    Cdlt

  6. #6
    Membre actif
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    856
    Détails du profil
    Informations personnelles :
    Âge : 59
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 856
    Points : 266
    Points
    266
    Par défaut réponse
    bonsoir,

    Ok merci pour le code


    A+

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

Discussions similaires

  1. Conversion string to date
    Par Fanny23 dans le forum Collection et Stream
    Réponses: 7
    Dernier message: 27/01/2012, 00h24
  2. conversion string en date
    Par psycho_xn dans le forum Servlets/JSP
    Réponses: 4
    Dernier message: 19/06/2007, 23h24
  3. Conversion string en date et heure
    Par loreleï85 dans le forum C#
    Réponses: 14
    Dernier message: 24/01/2007, 15h47
  4. conversion String en Date
    Par lisa-java dans le forum Langage
    Réponses: 3
    Dernier message: 12/01/2006, 16h14
  5. conversion String en Date (parse trop permissif)
    Par ciloulou dans le forum Collection et Stream
    Réponses: 2
    Dernier message: 13/09/2004, 18h36

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