![]() |
Delphi-Version: 10 Seattle
Wie wandle ich mikrosekunden in eine Zeit um?
Ich bekomme von einem Server eine Timestamp in Mikrosekunden zurück und möchte diese nun in Stunden: Minuten umwandeln und die Differenz zu der jetzigen Zeit berechnen.
Hat jemand eine Idee wie man so etwas programmiert? |
AW: Wie wandle ich mikrosekunden in eine Zeit um?
Schau mal bei den
![]() EDIT: Gerade erst nochmal vollständig gelesen. Um die Zeit zwischen TimeStamp und Now zu berechnen gibt es auf jeden Fall diverse Funktionen wie z.B. MinutesBetween, SecondsBetween, HoursBetween, usw. |
AW: Wie wandle ich mikrosekunden in eine Zeit um?
Für Mikrosekunden habe ich nichts in Delphi gefunden auch nicht in DateUtils.
Diese Seite berechnet das Perfekt: ![]() |
AW: Wie wandle ich mikrosekunden in eine Zeit um?
Warum nicht einfach eine
Delphi-Quellcode:
? Die ist genau für so etwas gedacht.
TTimeSpan
Delphi-Quellcode:
uses System.TimeSpan;
const myMicroseconds: Int64 = 123456789123; var timeSpan: TTimeSpan; begin timeSpan := TTimeSpan.Create(myMicroseconds * 10); // Ein "Tick" ist eine Zehntel-Mikrosekunde WriteLn('Es sind ', timeSpan.Hours, ' Stunden und ', timeSpan.Minutes, ' Minuten'); readln; end. |
AW: Wie wandle ich mikrosekunden in eine Zeit um?
DateUtils hat nur Funktionen, die mit TDateTime arbeiten, bzw. nur von diesem ausgehend.
Und paar wenige Funktion zur Konvertierung, aber da nur von und nach anderen "Datums"-Formaten (UnixTimeStamp und JulianDate) Viele Date-Funktionen verstecken sich immernoch in der SysDtils. Aber wenn man nachliest, wie der Typ TDateTime definiert ist, dann kann man sowas auch selber umrechnen. Vor dem Komma die Tage und danach der Anteil des Tages. Und dann gibt es auch nette Konstanten, zum umrechnen, ala HoursPerDay, MinsPerDay, SecsPerDay, MSecsPerDay oder OneHour, OneMinute, OneSecond und OneMillisecond.
Delphi-Quellcode:
DateTime := (myMicroseconds / 1000 * OneMillisecond);
DateTime := Now - (myMicroseconds / 1000 * OneMillisecond); usw. Zitat:
Eine "Dauer" oder doch ein "Zeitstempel" ? ![]() Vielleicht sowas wie ein "zu genauer Unix-TimeStamp" ... in Sekunden umgerechnet würde es dann ![]() und mit DaySpan HourSpan MinuteSpan SecondSpan oder DaysBetween MinutesBetween SecondsBetween MilliSecondsBetween, zusammen mit Now wäre dann die Differenz. |
AW: Wie wandle ich mikrosekunden in eine Zeit um?
Ich habe 1475066323000 und das ist ein komplettes Datum das aber in meinem Fall immer nur max. 30 Minuten vom jetzigen entfernt ist.
Dein Beispiel
Code:
funktioniert bei mir nicht. Was soll man denn für OneMillisecond eingeben? Für myMicroseconds habe ich meinen wert 1475066323000 verwendet.
DateTime := (myMicroseconds / 1000 * OneMillisecond);
DateTime := Now - (myMicroseconds / 1000 * OneMillisecond); |
AW: Wie wandle ich mikrosekunden in eine Zeit um?
Zitat:
Delphi-Quellcode:
(aus Sysutils)
MSecsPerDay
Aber dann wäre die Formel auch falsch. So sollte es dann gehen:
Delphi-Quellcode:
DateTime := myMicroseconds / 1000 / MSecsPerDay;
myMicroSeconds/1000 wandelt in Millisekunden um, das nochmal durch MSecsPerDay dividiert ergibt Tag, was wiederum die Einheit für TDateTime ist. |
AW: Wie wandle ich mikrosekunden in eine Zeit um?
Oder auch so:
Delphi-Quellcode:
const
MicroSecsPerDay = MSecsPerDay * 1000; DateTime := myMicroseconds / MicroSecsPerDay; |
AW: Wie wandle ich mikrosekunden in eine Zeit um?
Danke euch allen! :thumb:
Da waren einige richtige Ansätze dabei. Und endlich habe ich es kapiert :-D |
AW: Wie wandle ich mikrosekunden in eine Zeit um?
![]() ![]() Also eigentlich eine sinnlos doppelte Konstante, aber halt ob man lieber Multipliziert oder Dividiert. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:39 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz