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 :

Timestamp vers datetime


Sujet :

Delphi

  1. #1
    Membre habitué
    Homme Profil pro
    Owner
    Inscrit en
    Décembre 2004
    Messages
    466
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Owner
    Secteur : Santé

    Informations forums :
    Inscription : Décembre 2004
    Messages : 466
    Points : 137
    Points
    137
    Par défaut Timestamp vers datetime
    Salut,

    J'ai 3378806399 à convertir en DateTime (auquel je dois ajouter 1904 (1er janvier à 0h 0min et 0 sec)
    celà devrait donner qq chose comme 25/01/2011 14:45:00

    En faisant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    var temps:TdateTime; 
    temps:=TimeStampToDateTime(strtotime(edit1.Text));
    retourne
    Types incompatible: 'TTimeStamp' et 'TDateTime'
    Je n'en sors vraiment pas!!!
    Help!
    Merci pour votre aide!!!
    PhilLu

  2. #2
    Membre expérimenté
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    2 425
    Détails du profil
    Informations personnelles :
    Âge : 71
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 2 425
    Points : 1 326
    Points
    1 326
    Par défaut
    Bonjour à toutes et à tous,

    @ PhilLu, peut être une idée, essaye cette fonction :

    TimeStampToDateTime convertit une valeur TTimeStamp en valeur TDateTime.

    Unité

    SysUtils

    function TimeStampToDateTime(const TimeStamp: TTimeStamp): TDateTime;

    Description

    Appelez TimeStampToDateTime pour convertir une valeur TTimeStamp en valeur TDateTime. Les valeurs TTimeStamp représentent l'heure en séparant la date et l'heure, où la date est le nombre de jours calendaires écoulés depuis le début du calendrier actuel (le premier janvier 0001 aurait la valeur 1), et l'heure est le nombre de millisecondes depuis minuit. Les valeurs TDateTime représentent l'heure comme le nombre de jours écoulés depuis le 30 décembre 1899 à midi.

    Autre exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    const  UnixStartDate: TDateTime = 25569.0;  // Sets UnixStartDate to TDateTime of 01/01/1970
     
    function UnixToDateTime(USec: Longint): TDateTime;
    begin
      //Example: UnixToDateTime(1003187418);
      Result := (Usec / 86400) + UnixStartDate;
    end;
    Utilisation avec ton nombre:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    procedure TForm1.Button2Click(Sender: TObject);
     var
     MonTemps : TDateTime;
    begin
      MonTemps := UnixToDateTime(StrToInt64('3378806399'));
      ShowMessage(DateTimeToStr(MonTemps));
     
    end;
    Testé avec D6 sous Seven 64bits !

    @+,

    Cincap

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

    Je rejoins cincap dans son raisonnement, cette valeur ne représente pas un TTimeStamp.
    Cela ressemble fortement à un encodage similaire à celui d'Unix, c'est-à-dire un nombre de secondes écoulées depuis une date de référence (1 jan 1970 à 0 h pour Unix).

    Si ta référence est le 1 jan 1904, alors cette petite fonction renverra un TDateTime (c'est la même que cincap):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    function ConvertToDateTime(const Value: Int64): TDateTime;
    const
      BaseDate: TDateTime = 1462;   // 1-jan-1904
    begin
      Result := (Value / 86400) + BaseDate;
    end;
    Ce qui, à noter, renvoie '25/01/2011 13:19:59' pour la valeur 3378806399, et non 25/01/2011 14:45:00 comme tu l'annonces.

    @+

Discussions similaires

  1. Convert de nvarchar vers Datetime, OVERFLOW
    Par Thargor dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 01/02/2007, 13h55
  2. Conversion timestamp vers date avec oracle 9.2
    Par gaboo_bl dans le forum Oracle
    Réponses: 5
    Dernier message: 27/11/2006, 14h10
  3. quelle diference y a t-il entre TIMESTAMP et DATETIME
    Par helium_lynx dans le forum Débuter
    Réponses: 6
    Dernier message: 12/06/2006, 00h16
  4. conversion date timestamp vers date mysql
    Par seb0026 dans le forum SQL Procédural
    Réponses: 2
    Dernier message: 13/10/2005, 19h48
  5. Conversion Timestamp vers varchar
    Par stejutt dans le forum SQL
    Réponses: 4
    Dernier message: 08/01/2004, 08h46

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