2011-02-16 5 views
3

Dans une application Delphi XE, je suis en train de lire les valeurs d'une base de données créée à l'origine par un programme C++. Il y a une colonne de date, stockée (il semblerait) comme time_t, c'est-à-dire, un temps Unix, le nombre de secondes écoulées depuis 00:00, le 1er janvier 1970 UTC. Je peux gérer le fuseau horaire, mais comment puis-je obtenir TDateTime à partir de (long) time_t?Conversion d'un time_t C++ en Delphi TDateTime

Répondre

3

Si vous voulez faire vous-même pour une raison quelconque, l'approche évidente serait de diviser le time_t par le nombre de secondes dans une journée , puis ajoutez cela à un TDateTime pour 00:00, le 1er janvier 1970.

(Mais la réponse RRUZ devrait fonctionner et signifie que vous n'avez pas besoin de réinventer la roue).

+1

Vous en auriez besoin si vous utilisez une version de Delphi qui n'inclut pas l'unité DateUtils. L'algorithme que vous décrivez est exactement ce que fait UnixToDateTime; la valeur TDateTime à laquelle vous faites référence est 25569. –

+1

Merci de mentionner cette constante. Je n'ai pas regardé le code de UnixToDateTime et j'étais un peu trop paresseux pour comprendre la bonne valeur de TDataTime. Mais un appel rapide à EncodeDate aurait dû fournir au questionneur cette valeur :) –

Questions connexes