Entwickler-Ecke

Delphi Language (Object-Pascal) / CLX - Mit Zeit rechnen


alexschultze - So 08.12.02 13:17
Titel: Mit Zeit rechnen
hiho.

mich würde auch mal interessieren wie ich mit Zeit rechnen kann. Zeiten wie HH:MM:SS nützen mir gar nichts. Kann ich das ganze in Minuten / Sekunden ab 0 Uhr rechnen?
Wie kann ich das ausgeben?

alex


bis11 - So 08.12.02 14:00

Was willst Du denn genau rechnen ? Wenn Du nur Minuten oder Stunden zusammenrechnen willst um zu Erfahren wieviel Tage es sind, dann sind es ganz einfach Rechenoperation, wo Du die Zahlen durch 60 teilst oder durch 24 teilst oder umgekehrt.


alexschultze - So 08.12.02 15:19

nee, ich hab einfach mal gehört das z.B. Windows die Zeit in Sekunden nach 0 Uhr zählt oder ähnlich.

Ich möchte z.B. das bestimmte Sachen zeitlich berechnet werden.

Meinetwegen dass jemand um 15:12:00 einloggt und und nach 15:17:00 automatisch ausgeloggt wird.

Und wenn ich da mit 15:12:00 arbeite ist das recht unsicher und nett allzu elegant. Ich bräuchte eben das ganze im puren Minuten oder Sekundenformat.


Millo - So 08.12.02 16:55

Moin,

Ich bin da auch net mehr so fit drin aber ich hab das auch mal probiert wenn ich mich recht entsinne kannst du mit
:arrow: DecodeTime
eine Zeitangabe aufschlüsseln
:arrow: EncodeTime
bewirkt das gegen Teil.


Wolff68 - So 08.12.02 20:52

Also hierzu solltet Ihr Euch einfach mal klar werden in welchem Format TDateTime vorliegt.
Delphi-Hilfe zu TDateTime hat folgendes geschrieben:
Der ganzzahlige Teil eines TDateTime-Wertes entspricht der Anzahl der Tage seit dem 30.12.1899. Der fraktionale Teil TDateTime-Wertes gibt die Tageszeit an.

Also ist hinter dem Komma die Uhrzeit als Bruchteil des Tages.
Dieser Teil mal 24 sind die Stunden. Die Bruchteile der Stunden mal 60 sind die Minuten usw...
Hier mal als Beispiel:

Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
procedure TForm1.Button2Click(Sender: TObject);
var T: TDateTime;
    H: Real;
    M: Real;
    S: Real;
begin
  T := Now; // Aktuelles Datum und Uhrzeit setzen
  T := T - Trunc(T); //Vorkommateil eliminieren
  H := 24 * T; // Nachkommateil mal 24 Stunden pro Tag
  Edit1.Text := IntToStr(Trunc(H)); // Ausgeben
  H := H - Trunc(H); //Vorkommateil eliminieren
  M := 60 * H; // Nachkommateil mal 60 Minuten pro Stunde
  Edit2.Text := IntToStr(Trunc(M));
  M := M - Trunc(M); //Vorkommateil eliminieren
  S := 60 * M; // Nachkommateil mal 60 Sekunden pro Minute
  Edit3.Text := IntToStr(Trunc(S));
end;

DecodeTime macht im Prinzip nichts anderes, nur eben als Funktion.


Wolff68 - So 08.12.02 20:55

Ach ja: Der Nachkommateil von TDateTime mal 1440 (24*60) ergibt die Minuten seit 0:00Uhr, und mal 86400 (24*60*60) natürlich die Sekunden...


alexschultze - So 08.12.02 21:37

danke danke danke!