AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

2 Timestamps subtrahieren

Ein Thema von 1carter1 · begonnen am 26. Dez 2009 · letzter Beitrag vom 26. Dez 2009
Antwort Antwort
1carter1

Registriert seit: 22. Nov 2009
30 Beiträge
 
#1

2 Timestamps subtrahieren

  Alt 26. Dez 2009, 22:53
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:
const
UnixStartDate: TDateTime = 25569.0;


function DateTimeToUnix(ConvDate: TDateTime): Longint;
begin
Result := Round((ConvDate - UnixStartDate) * 86400);
end;
und dann eben

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
  Mit Zitat antworten Zitat
Benutzerbild von Matze
Matze
(Co-Admin)

Registriert seit: 7. Jul 2003
Ort: Schwabenländle
14.929 Beiträge
 
Turbo Delphi für Win32
 
#2

Re: 2 Timestamps subtrahieren

  Alt 26. Dez 2009, 23:16
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:
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;
Aufruf:

ShowMessage(FormatSeconds(832)); Nur kommt dann 00:13:52 heraus.

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
  Mit Zitat antworten Zitat
1carter1

Registriert seit: 22. Nov 2009
30 Beiträge
 
#3

Re: 2 Timestamps subtrahieren

  Alt 26. Dez 2009, 23:19
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:
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;
und 13:52 stimmt:

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]
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:10 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz