Azerty9862
Messages postés4Date d'inscriptionsamedi 13 novembre 2004StatutMembreDernière intervention23 janvier 2006
-
22 janv. 2006 à 20:17
PhilLu
Messages postés251Date d'inscriptionlundi 9 novembre 2009StatutMembreDernière intervention11 mai 2021
-
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
jlen100
Messages postés1606Date d'inscriptionsamedi 10 juillet 2004StatutMembreDernière intervention25 juillet 201413 22 janv. 2006 à 21:25
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
cs_Delphiprog
Messages postés4297Date d'inscriptionsamedi 19 janvier 2002StatutMembreDernière intervention 9 janvier 201332 22 janv. 2006 à 21:32
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.
Azerty9862
Messages postés4Date d'inscriptionsamedi 13 novembre 2004StatutMembreDernière intervention23 janvier 2006 22 janv. 2006 à 21:56
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.
Vous n’avez pas trouvé la réponse que vous recherchez ?
jlen100
Messages postés1606Date d'inscriptionsamedi 10 juillet 2004StatutMembreDernière intervention25 juillet 201413 22 janv. 2006 à 22:05
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.
cs_Delphiprog
Messages postés4297Date d'inscriptionsamedi 19 janvier 2002StatutMembreDernière intervention 9 janvier 201332 22 janv. 2006 à 22:24
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.
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)
jlen100
Messages postés1606Date d'inscriptionsamedi 10 juillet 2004StatutMembreDernière intervention25 juillet 201413 22 janv. 2006 à 22:35
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!!
jlen100
Messages postés1606Date d'inscriptionsamedi 10 juillet 2004StatutMembreDernière intervention25 juillet 201413 23 janv. 2006 à 08:32
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 .
PhilLu
Messages postés251Date d'inscriptionlundi 9 novembre 2009StatutMembreDernière intervention11 mai 2021 22 mars 2011 à 23:22
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
cs_Delphiprog
Messages postés4297Date d'inscriptionsamedi 19 janvier 2002StatutMembreDernière intervention 9 janvier 201332 28 mars 2011 à 23:00
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.
PhilLu
Messages postés251Date d'inscriptionlundi 9 novembre 2009StatutMembreDernière intervention11 mai 2021 28 mars 2011 à 23:30
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