Timestamp [Résolu]

Azerty9862 4 Messages postés samedi 13 novembre 2004Date d'inscription 23 janvier 2006 Dernière intervention - 22 janv. 2006 à 20:17 - Dernière réponse : PhilLu 249 Messages postés lundi 9 novembre 2009Date d'inscription 6 mai 2018 Dernière intervention
- 28 mars 2011 à 23:30
Ma question est une toute simple question de debutant comment fait on pour ajouter a un timestamp une durée par exemple : 01:30 puis de reconvertir tout cela pour l'afficher dans un Tedit j'ai cherché mais j'ai rien trouvé. Merci d'avance pour vos reponses
Afficher la suite 

Votre réponse

13 réponses

jlen100 1651 Messages postés samedi 10 juillet 2004Date d'inscription 25 juillet 2014 Dernière intervention - 22 janv. 2006 à 21:25
+3
Utile
salut,

plutot que d'utiliser un Ttimestamp que tu ne peut pas afficher directement utilises plutot un Tdatetime çà donne:

Syntaxe Delphi :



function EncodeTime(Hour, Min, Sec, MSec: Word): TDateTime;





Description



La fonction EncodeTime renvoie une valeur de type TDateTime à partir des heure, minutes, secondes et millisecondes données.



Les valeurs admises vont de 0 à 23.



Les valeurs de minute et de seconde admises vont de 0 à 59.



Les valeurs de milliseconde admises vont de 0 à 999.



Si les valeurs indiquées sont en-dehors de ces limites, EncodeTime déclenche une exception EConvertError.



La valeur résultante est égale à un nombre compris entre 0 (inclusif)
et 1 (exclusif) qui indique la partie fractionnaire du jour en fonction
de l'heure indiquée ou (avec une valeur 1,0) minuit du jour suivant. La
valeur 0 correspond à minuit, 0,5 correspond à midi, 0,75 correspond à
18:00, et ainsi de suite.





procedure TForm1.Button3Click(Sender: TObject);

var apres:Tdatetime;

timestamp:Ttimestamp;

begin

apres:=encodetime( 0,1,30,0); //convertit 1mn30s en Tdatetime

label1.Caption:=timetostr(apres+now);// ajoute 1mn30s à l'heure actuelle et l'affiche

timestamp:=DateTimeToTimeStamp( apres+now); // pour l'exemple on la convertit en TTimeStamp

label2.Caption:=timetostr(now);// affiche l'heure actuelle

end;



@+

jlen
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de jlen100
jlen100 1651 Messages postés samedi 10 juillet 2004Date d'inscription 25 juillet 2014 Dernière intervention - 22 janv. 2006 à 22:08
+3
Utile
excuses petite erreur de frappe

var temps:TdateTime;

timestamp:Ttimestamp;



temps:=TimeStampToDateTime(timestamp);
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de jlen100
cs_Delphiprog 4580 Messages postés samedi 19 janvier 2002Date d'inscription 9 janvier 2013 Dernière intervention - 22 janv. 2006 à 21:32
0
Utile
Est-ce réellement utile de passer par des timestamps ?

Dixit l'aide de Delphi : "Utilisez TTimeStamp pour représenter des valeurs date-heure quand une grande précision est nécessaire dans la partie horaire.Quand les valeurs horaires n'ont pas besoin d'être précises àla milliseconde près,utilisez la représentation TDateTime qui est plus compacte."

Les timestamps expriment le nombre de secondes écoulées depuis une certaine date (01/01/1970). Si tu veux ajouter une durée, alors il faut la convertir dans le même unité, c'est à dire en secondes.
Ma question est : utilises-tu le TTimeStamp fourni avec Delphi ou une autre structure de données ?

<HR color=#008000>
Pensez à cliquer sur Réponse acceptée lorsque la réponse vous convient.
Commenter la réponse de cs_Delphiprog
Azerty9862 4 Messages postés samedi 13 novembre 2004Date d'inscription 23 janvier 2006 Dernière intervention - 22 janv. 2006 à 21:56
0
Utile
En fait je n'est pas specialement envie d'utiliser les timestamps mais la valeur de depart est un timestamp que l'utilisateur rentre dans un Tedit que je ne sait pas comment convertir en Tdatetime. Ensuite le programme doit ajouter une durée a tout cela et pour finir afficher le tout dans un Tedit au format 22/01/2006 20:29:18 (resolu merci jlen100).
Donc derniere question comment convertir un timestamp en Tdatetime merci.
Commenter la réponse de Azerty9862
jlen100 1651 Messages postés samedi 10 juillet 2004Date d'inscription 25 juillet 2014 Dernière intervention - 22 janv. 2006 à 22:05
0
Utile
la routine de convertion de timestamp en date time est TimeStampToDateTime

Syntaxe Delphi :



function TimeStampToDateTime(const TimeStamp: TTimeStamp): TDateTime;





Description



Appelez TimeStampToDateTime pour convertir une valeur TTimeStamp en
objet 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 objets TDateTime représentent l'heure
comme le nombre de jours écoulés depuis le 30 décembre 1899 à midi.

var temps:TdateTime;



temps:=TimeStampToDateTime(temps);



@+

jlen
Commenter la réponse de jlen100
cs_Delphiprog 4580 Messages postés samedi 19 janvier 2002Date d'inscription 9 janvier 2013 Dernière intervention - 22 janv. 2006 à 22:24
0
Utile
Allez jlen100, il te reste à écrire la fonction qui transformera une chaine de caractères en un TTimeStamp (avec un minimum de contrôles, bien sur, sinon ce ne serait pas drôle ). Je te cède volontiers ce plaisir...


<HR color=#008000>
Pensez à cliquer sur Réponse acceptée lorsque la réponse vous convient.
Commenter la réponse de cs_Delphiprog
Azerty9862 4 Messages postés samedi 13 novembre 2004Date d'inscription 23 janvier 2006 Dernière intervention - 22 janv. 2006 à 22:33
0
Utile
Merci a tous

apres:=encodetime(h.Value,m.Value,s.Value,0);
Result := EncodeDate(1970, 1, 1) + ((strtofloat(edit1.Text)+(strtofloat(inttostr(SpinEdit1.Value))*3600)) / 86400);
resultat.text := datetimetostr(result+apres);

Voila j'ai trouvé ca car avec ca:
temps:=TimeStampToDateTime(timestamp);
j'ai une erreur du compilateur : edit pas compatible avec timestamp (enfin qqc comme ca)
Commenter la réponse de Azerty9862
jlen100 1651 Messages postés samedi 10 juillet 2004Date d'inscription 25 juillet 2014 Dernière intervention - 22 janv. 2006 à 22:35
0
Utile
wouaf, wouaf encore que je ne me sois pas trop pousser en écriture
puisque c'est un copier coller de l'aide (mais tu l'avais dèjà
compris!!) et quitte à convertir ..... bon aller je retourne à mes
microsecondes (en 'C') et ça fait déjà quelques jours que je suis
dessus et ce n'est pas fini. Ah les communications à haut débit qu'est
ce ça prend comme temps!!

@+

jlen
Commenter la réponse de jlen100
jlen100 1651 Messages postés samedi 10 juillet 2004Date d'inscription 25 juillet 2014 Dernière intervention - 22 janv. 2006 à 22:40
0
Utile
temps étant un Tdatetime pour l'affecter au TEdit il faut le convertir en string en faisant:

label2.Caption:=timetostr(temps)

@+

jlen
Commenter la réponse de jlen100
jlen100 1651 Messages postés samedi 10 juillet 2004Date d'inscription 25 juillet 2014 Dernière intervention - 23 janv. 2006 à 08:32
0
Utile
Au fait delphiprog pour la saisie il suffit d'utiliser un TMaskEdit en
utilisant le mask heure longue dans la propriété EditMask quand à
reconvertir en timestamp il n'y aurait aucun intérêt puisque toutes le
fonctions de delphi sont pour des TDatetime. et que pour convertir une
chaine en heure:minute:seconde il y a la fonction StrtoTime() ou
StrtoTimeDef() qui le font à ma place.

Azerty9862 tu aurais plutot avantage à convertir tes timestamp
enTDatetime au départ et à ne travailler qu' avec le type
Tdatetime ensuite.

Un autre conseil évite de déclarer une variable result qui est réservée au retour des resultat de fonction .

@+

jlen
Commenter la réponse de jlen100
PhilLu 249 Messages postés lundi 9 novembre 2009Date d'inscription 6 mai 2018 Dernière intervention - 22 mars 2011 à 23:22
0
Utile
En faisant:
var temps:TdateTime;
temps:=TimeStampToDateTime(strtotime(edit1.Text));
retourne Types incompatible: 'TTimeStamp' et 'TDateTime'

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
Je n'en sors vraiment pas!!!
Help!
Merci pour votre aide!!!
PhilLu
Commenter la réponse de PhilLu
cs_Delphiprog 4580 Messages postés samedi 19 janvier 2002Date d'inscription 9 janvier 2013 Dernière intervention - 28 mars 2011 à 23:00
0
Utile
Bonjour PhiLU,

Pourquoi veux-tu utiliser TimestampToDateTime ?
Ceci compile sans problème :
var
  temps:TdateTime;
begin
  temps := StrtoDatetime(edit1.Text);
end;


Peux-tu indiquer si le chiffre que tu donnes correspond au nombre de secondes écoulées depuis le 1/1/1970 (timestamp Unix) ou depuis le 1/1/2001 (timestamp delphi) ?

May Delphi be with you

Pensez à cliquer sur Réponse acceptée lorsque la réponse vous convient.
Commenter la réponse de cs_Delphiprog
PhilLu 249 Messages postés lundi 9 novembre 2009Date d'inscription 6 mai 2018 Dernière intervention - 28 mars 2011 à 23:30
0
Utile
Ni unix ni Delphi,
Le nombre représente le nombre de secondes depuis le 1er janvier 1904 à 0h 0mkn et 0 sec.
J'ai essayé de créer une fct pour extraire les années, mois, jours, h, mkn et secondes mais pour la division quelle valeur doit on utilkser pour le nombre de jours dans un mois???
Merci
PhilLu
Commenter la réponse de PhilLu

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.