2017-08-07 2 views
0

Je ne trouve pas de solution pour convertir le code suivant à exécuter sous OSX. Est-ce que quelqu'un sait comment je peux obtenir un timestamp unix (UTC) sous OSX?Delphi Firemonkey OSX Comment convertir le code suivant?

function GetUnixTimestamp: int64; 
var 
    st: TSystemTime; 
    dt: TDateTime; 
    ut: int64; 
begin 
    dt := SystemTimeToDateTime(st); 
    ut := DateTimeToUnix(dt); 
    result := ut; 
end; 

Répondre

1

Qu'à cela ne tienne, je suis tout simplement stupide ... le code suivant fait exactement ce que je veux:

result:=DateTimeToUnix(now,true); 
+1

Vous êtes sûr que 'Now' renvoie l'heure de la date UTC: P? – Victoria

+0

Non, je ne le suis pas, et je pense que ce n'est pas le cas, j'ai mal interprété le drapeau concernant l'UTC. Donc, la question est toujours ouverte, comment puis-je obtenir l'horodatage unix avec firemonkey et OSX comme cible? – Softtouch

1

Ajouter System.DateUtils à votre clause uses.

Ensuite, utilisez ce code:

//Get the current local time 
dtLocal:=Now; 
//Convert to UTC 
dtUTC:=TTimeZone.Local.ToUniversalTime(dtLocal); 
//Convert UTC time to Unix format 
dtUTCUnix:=DateTimeToUnix(dtUTC, True); 

Notez que TTimeZone.Local a d'autres attributs, y compris décalage horaire UTC, l'heure d'été, etc. Utiliser en fonction de vos besoins.

+0

@softtouch - Est-ce que la réponse ci-dessus a répondu à votre question? – Rohit