Utilisation de TimeStamp

guilhemrostain
Messages postés
12
Date d'inscription
jeudi 25 mars 2004
Statut
Membre
Dernière intervention
12 août 2004
- 29 juin 2004 à 13:50
WhiteHippo
Messages postés
1154
Date d'inscription
samedi 14 août 2004
Statut
Membre
Dernière intervention
5 avril 2012
- 3 févr. 2011 à 21:02
Bonjour,

j'ai un champ de ma base de donnée nommé Timestamp qui est de type Entier long sur 10 chiffres (ex : 1052990591).
J'ai besoin d'extraire ce champ sous Dephi pour récuperer l'heure. Pour cela je voudrais donc le convertir en TTimeStamp sous Delphi.
Malheureusement je ne peux pas l'extraire directement en TimeStamp, je suis obligé de passer par une String, de le convertir en DateTime puis en TTImeStamp... bref c'est pas la joie et surtout ca marche pas.
"1052990591 n'est pas une date et une heure valide" dixit Delphi quand j'essaye de le convertir en DateTime.

   ma_date:=DataModule.Query1.FieldByName('Time_Create').AsString; //Time_Create est un champ de type Long Int sous Access

    ma_date2:=StrToDateTime(ma_date);


Est-ce que quelqu'un saurait comment je peux récupérer ce TimeStamp dans ma base de donnée sous Delphi ?
Merci

13 réponses

cs_Kenavo
Messages postés
702
Date d'inscription
vendredi 21 mars 2003
Statut
Membre
Dernière intervention
1 octobre 2009
4
29 juin 2004 à 17:20
Si la valeur que tu donnes n'est pas trop bidon, ça pourrait être le nombre de minutes depuis le 1er janvier 0001.
Donc avec
var
TStamp : TTimeStamp;
li : Longint;
Date : TDateTime;
Begin
li := StrToInt('1052990591');
TStamp.Date := Trunc(li/1440); //nombre de jour li :li-1440*(Trunc(li/1440))*60000; // nombre de minutes x 60000 nombre de millisecondes
TStamp.Time := Round(li);
Date := TimeStampToDateTime(TStamp);
end;

Ce qui donne comme date : 04/02/2003 06:05:14

Et ça n'a pas l'air trop con !

Ken@vo
____________________
Code, Code, Codec !
0
guilhemrostain
Messages postés
12
Date d'inscription
jeudi 25 mars 2004
Statut
Membre
Dernière intervention
12 août 2004

30 juin 2004 à 14:23
Ca n'a pas l'air trop con en effet ^^
Je vais tester. En tout cas merci de ton aide.
0
guilhemrostain
Messages postés
12
Date d'inscription
jeudi 25 mars 2004
Statut
Membre
Dernière intervention
12 août 2004

30 juin 2004 à 16:12
Bon j'ai testé et malheuresement cela ne marche pas. Deja la date ne correspond pas à la date de la base de donnée et l'heure ne correspond pas à une heure d'ouverture de la boite où je bosse ^^ (6h c'est un peu tot!)

Mais surtout lorsque je prend une autre valeur de la base de données et bien ca plante (EConvert error 78987,-38478383... n'est pas une heure correcte)

Alors je vais essayer autre chose... mais si vous avez d'autre idées pour m'aider n'hésitez pas.
0
cs_Kenavo
Messages postés
702
Date d'inscription
vendredi 21 mars 2003
Statut
Membre
Dernière intervention
1 octobre 2009
4
30 juin 2004 à 17:14
Donne donc une liste de ces p... de date en entier sur 10 chiffres, on va regarder. dis nous auusi ce que tu espère récupérer. On va bien trouver !
C'est normal que ça plante : y a un truc négatif ! Y a une parenthèse qui manque !
li := (li-1440*(Trunc(li/1440)))*60000;

Ken@vo
____________________
Code, Code, Codec !
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
guilhemrostain
Messages postés
12
Date d'inscription
jeudi 25 mars 2004
Statut
Membre
Dernière intervention
12 août 2004

30 juin 2004 à 18:02
Toujours la même erreur meme avec li := ((li-1440)*(Trunc(li/1440)))*60000; :'(

Bon voila une petite liste de TimeStamp pour que ce soit plus simple.

Time_Create
--------------
1053008086
1053008177
1053008211

Théoriquement cela doit correspondre au 1er Mai 2003 et l'heure doit théoriquement être comprise entre 8h et 20h...
0
guilhemrostain
Messages postés
12
Date d'inscription
jeudi 25 mars 2004
Statut
Membre
Dernière intervention
12 août 2004

11 août 2004 à 17:05
D'apèrs la maigre documentation que j'ai reussi à me procurer sur la base de donnée, il s'agierai "Le temps et date de création d'inscription (en secondes)"

Si quelqu'un a une idée je suis preneur =)
0
cs_Kenavo
Messages postés
702
Date d'inscription
vendredi 21 mars 2003
Statut
Membre
Dernière intervention
1 octobre 2009
4
12 août 2004 à 09:44
Salut,

Si c'est en secondes, essaie le nombre de secondes depuis le 1er janvier 1970 : c'est un format de date plus ou moins connu en C.

Ca donne 15 mai 2003 14h et quelque pour les trois dates que tu donnes !

Ken@vo
____________________
Code, Code, Codec !
0
guilhemrostain
Messages postés
12
Date d'inscription
jeudi 25 mars 2004
Statut
Membre
Dernière intervention
12 août 2004

12 août 2004 à 10:11
En effet, j'en avais déjà entendu parler. Mais comment as tu fais pour trouver ces dates ? Je n'arrive pas a trouver d'algo pour faire cette conversion :(
0
cs_Kenavo
Messages postés
702
Date d'inscription
vendredi 21 mars 2003
Statut
Membre
Dernière intervention
1 octobre 2009
4
12 août 2004 à 11:08
Tu divises ta valeur par le nombre de secondes par jour (24*3600) et tu obtiens une date qui ressemble au TDateTime de Delphi (partie entière = jour, partie décimale = quantième de journée). Après, tu ajoutes au nombre de jours (depuis le 1er jan 1970) le nombre de jours équivalant au 1er janvier 1970 :

var
  Li : LongInt;
  Jan70 : TDateTime;
  x : real;
  s : string;
begin
  Jan70 := StrToDateTime('01/01/1970 00:00');
  li := 1053008086;
  x:= li / (24 * 3600);  //partie entière=jour + reste
  x:= x + Jan70; // + 1er janvier 1970
  s := DateTimeToStr(x);  // conversion en date
  Label1.Caption := s; // Pour visu
end;


Ken@vo
____________________
Code, Code, Codec !
0
guilhemrostain
Messages postés
12
Date d'inscription
jeudi 25 mars 2004
Statut
Membre
Dernière intervention
12 août 2004

12 août 2004 à 14:24
Magnifique ca marche parfaitement :) Merci de m'avoir aidé Kenavo, tu m'hôte une grosse épine du pied !
0
cs_brunoh
Messages postés
4
Date d'inscription
dimanche 4 mai 2003
Statut
Membre
Dernière intervention
25 janvier 2005

24 sept. 2004 à 10:31
Bonjour, il existe une routine en delphi utilisant l'unité "DateUtils" dans uses

Ce format de date est un format unix.

Pour convertir les valeurs (ex : 1052990591). en date et heure tout en prenant en compte la date du jeudi 1er janvier 1970

il suffit de faire

Label1.caption:=IntToStr(UnixToDateTime(1052990591));

le contraire une date et heure vers XXXXXXXXXX (ex:1052990591)

Label1.caption:=IntToStr(DateTimeToUnix(now));

Cordialement.
0
PhilLu
Messages postés
251
Date d'inscription
lundi 9 novembre 2009
Statut
Membre
Dernière intervention
11 mai 2021

3 févr. 2011 à 08:19
Salut,
Puisque vous semblez bien informé au sujet des conversions de dates, j'ai une question à vous soumettre:
Je dois convertir un TimeStamp en date hh mm ss mais je n'arrive pas à savoir comment est construit ce TimeStamp!
exemple: 3375177394 qui devrait correspondre à environ 14/12/2010 à 18h10
J'ai essayé pas mal de chose mais sans résultat!
Qui peut m'aider?

Merci d'avance,
PhilLu
0
WhiteHippo
Messages postés
1154
Date d'inscription
samedi 14 août 2004
Statut
Membre
Dernière intervention
5 avril 2012
2
3 févr. 2011 à 21:02
Bonsoir,

il serait certainement plus aisé pour trouver la méthode de calcul de disposer d'un second timestamp ! surtout si c'est du non-standard !

N.B. Un nouveau message sur le forum aurait été aussi souhaitable.

Cordialement.[hr]"L'imagination est plus importante que le savoir." Albert Einstein
0