2016-09-30 3 views
0

Ich habe diese Zeit von einem Server: 1475245457452 Das Datum und Zeit dafür ist: 2016.09.30, 16:24:17Wie konvertiert man ein Millisekunden-Datum in eine DateTime?

Wie kann ich diese 1475245457452 in Delphi zu einem korrekten Datum und Uhrzeit-Format konvertieren?

+0

Haben Sie das DateUtils-Gerät ausgecheckt? –

+0

Ich habe Ihre Frage neu getagged, um Ihre Version zu schätzen. Es gibt kein XE10. Meine Vermutung ist Berlin, aber es wird keinen Unterschied machen. –

+2

Ich korrigierte die Überschrift, um * Milli * Sekunden statt * Mikro * Sekunden zu lesen, da der von Ihnen angegebene Wert tatsächlich Millisekunden (von Unix-Epoche) ist. –

Antwort

6

Sie haben nicht gesagt, aber ich kann schätzen, dass diese Menge tatsächlich Millisekunden ist, gemessen von der Unix-Epoche. So wandeln sie UnixToDateTime von der System.DateUtils Einheit mit:

{$APPTYPE CONSOLE} 

uses 
    System.SysUtils, 
    System.DateUtils; 

begin 
    Writeln(DateTimeToStr(UnixToDateTime(1475245457452 div 1000))); 
end. 

ich von 1000 geteilt haben in Sekunden zu konvertieren, weil UnixToDateTime die Zeit in Sekunden statt Millisekunden erwartet. Wenn Sie den Millisekunden-Teil der Zeit beibehalten möchten, können Sie den Datums- Zeit-Wert leicht um den Rest der Division erhöhen.

Es ist wichtig zu betonen, dass die Zeit immer in einem Einheitensystem und relativ zu einem Ursprung oder einer Epoche gemessen wird. Es genügt nie, nur einen Wert zu kennen, aber man muss sowohl die Einheiten als auch die Epoche kennen. Ja, es ist oft einfach genug, diese zu erraten, aber es wäre normalerweise besser, die Spezifikation der Software zu lesen, die den Zeitwert erzeugt, um definitiv herauszufinden, was der Wert ist.

+0

Danke! Dies ist die Lösung. – Pascal

+0

@Pascal Wenn dies die richtige Lösung ist, markieren Sie die Antwort bitte als korrekt –

Verwandte Themen