![]() |
2 Timestamps subtrahieren
Hi,
Ich komme bei folgendem Problem nicht weiter: Ich möchte 2 Timestamps subtrahieren (soweit kein problem) und dann möchte ich das ergebnis in Stunden ausgeben lassen. Ich erzeuge Timestamps mit folgender Funktion, die ich im Internet gefunden habe: Zitat:
DateTimeToUnix(now); so, bis hierher kein Problem, ich habe nun also 2 Timestamps sagen wir ich habe 1261867020 und 1261867852 nun subtrahiere ich diese wie folge: rtime := 1261867852 - 1261867020; das ergebnis ist dann 832 nun möchte ich diese 832 in der Form h:m:s anzeigen lassen, ich glaube das währen 0:8:32 (bin mir aber nicht ganz sicher hab so meine Probleme mit timestamps) Und ich wollte euch fragen, ob ihr mir bei diesem Problem helfen könnt, wenn ich die sache falsch angehe sprich wenn man diese 832 überhaupt nicht umrechnen kann, dann würde ich mich über verbesserungsvorschläge freuen. mfg carTer |
Re: 2 Timestamps subtrahieren
Hallo,
deine Timestamp-Differenz müsste dir die Zeit in Sekunden liefern. Die folgende Funktion wandelt dir die Sekunden in die gewünschte Darstellung um (hoffe ich):
Delphi-Quellcode:
Aufruf:
function FormatSeconds(seconds: Integer): string;
var h, m, s: Integer; begin s := (seconds) mod 60; m := (seconds div 60) mod 60; h := (seconds div 3600) mod 24; Result := Format('%.2d:%.2d:%.2d', [h, m, s]); end;
Delphi-Quellcode:
Nur kommt dann 00:13:52 heraus.
ShowMessage(FormatSeconds(832));
Wenn du die führenden Nullen nicht haben möchtest, da du sie bei dir weg gelassen hast, dann entferne alle ".2" aus der Funktion. Grüße, Matze |
Re: 2 Timestamps subtrahieren
ja, hatte mich nebenbei noch an ne eigene funktion gesetzt, wollte gerade schreiben, dass ichs hinbekommen habe, bei mir kommt auch 13:52 raus, meine funktion sieht ein bisschen "unschöner" aus als deine^^ hier ist sie:
Delphi-Quellcode:
und 13:52 stimmt:
function zeitumwandeln(diff: integer) : string;
var h,n,s: integer; begin h := diff div 3600; diff := diff mod 3600; n := diff div 60; diff := diff mod 60; s := diff; result := inttostr(h)+':'+inttostr(n)+':'+inttostr(s); end; 600 = 10min 240 = 4min => 232 = 3min 52 sek 10min + 3min+52sek = 13:52 Vielen dank dir^^ mfg varTer [edit=Matze][quote]- durch [delphi]-Tags ersetzt. MfG, Matze[/edit] |
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:18 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