Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Datum in Integer umwandeln (https://www.delphipraxis.net/101675-datum-integer-umwandeln.html)

N30N 17. Okt 2007 09:35


Datum in Integer umwandeln
 
Hi,

ich würde gerne eine Uhrzeit in Integer, anstatt in string umwandeln. Die normale Funtkion "timeToStr( time() );" gibt es mir nur als string aus.

Wie kann ich denn zwei Uhrzeiten voneinander abziehen? Die Punkte im Datum führen ja sicherlich zu einem ungültigem Interger Wert.


Danke schonmal :)

Phoenix 17. Okt 2007 09:42

Re: Datum in Integer umwandeln
 
Der TDateTime Wert ist eigentlich eine Fließkommazahl.
Der Teil vor dem Komma ist das Datum, die Nachkommastellen sind die Uhrzeit.

Deswegen kannst Du zwei TDateTime-Werte auch direkt voneinander abziehen.

DeddyH 17. Okt 2007 09:44

Re: Datum in Integer umwandeln
 
Du kannst Dir ja auch einmal diesen Thread ansehen.

Sharky 17. Okt 2007 09:54

Re: Datum in Integer umwandeln
 
Hai N20N,

ich werfe mal einfach einige Funktionsnamen in den Raum ;-)

Delphi-Quellcode:
// Aus DateUtils. Weiss aber nicht ab welcher Delphiversion vorhanden
  DaysBetween()
  MonthsBetween()
  YearsBetween()
  HoursBetween()
  MinutesBetween()
  SecondsBetween()
// Aus SysUtils
  EncodeDate()
  DecodeDate()

N30N 17. Okt 2007 14:28

Re: Datum in Integer umwandeln
 
Okay, mittlerweile hab iche s hinbekommen zwei Uhrzeiten voneinander abzuziehen.

Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
begin
edit1.Text := timeToStr( time() );
end;

procedure TForm1.Button1Click(Sender: TObject);
var
Zeit : tdatetime;
Zeit2 : tdatetime;
Ergebniss :tdatetime;
begin
Zeit := strtotime(edit2.Text);
Zeit2 := strtotime(edit1.Text);
Ergebniss := Zeit - Zeit2;
edit3.Text := timetostr(Ergebniss)
end;

Eventuell etwas umständlich, aber es funktioniert ^^




So, nun müsst ich mein Ergebniss nur noch ordentlich umwandeln können, so dass ich zum Beispiel Stunden, Minuten und Sekunden in Variablen speichern kann. Ich will als Endergebniss die Zeit die verbleibt als Sekunden haben. Wie stell ich das jetzt an?

DeddyH 17. Okt 2007 14:36

Re: Datum in Integer umwandeln
 
Wenn Du 2 TDateTime voneinander abziehst, hast Du die Differenz in Tagen. Mit 24 multipliziert ergibt das die Differenz in Stunden. Diese mit 60 multipliziert ergibt die Differenz in Minuten. Wie kommt man nun auf Sekunden? :zwinker:

N30N 23. Okt 2007 09:39

Re: Datum in Integer umwandeln
 
Zitat:

Zitat von DeddyH
Wenn Du 2 TDateTime voneinander abziehst, hast Du die Differenz in Tagen. Mit 24 multipliziert ergibt das die Differenz in Stunden. Diese mit 60 multipliziert ergibt die Differenz in Minuten. Wie kommt man nun auf Sekunden? :zwinker:

Hm, es geht hier aber um Time, nicht um Date ;)


Wenn ich zum Beispiel rechne: 10:40:00 - 10:30:00, dann kommt da 00:10:00 raus. Durch multiplizieren mit 60 hätte ich dann den Wert in Sekunden. Doch wie genau multipliziere ich jetzt einen Wert mit Doppelpunkten mit 60? Ausserdem müsste ich ja dann irgendwie die Stunden / Minuten und Sekunden voneinander trennen, da ich ja nicht das komplette Ergebniss * 60 nehmen kann.

Wie stell ich das an? :(

Phoenix 23. Okt 2007 09:52

Re: Datum in Integer umwandeln
 
z.B. mit Delphi-Referenz durchsuchenDecodeTime aus der Unit SysUtils.
Guck Dir in der Onlinehilfe mal die ganzen Sachen in der Kategorie Datum/Zeit an.

DeddyH 23. Okt 2007 09:59

Re: Datum in Integer umwandeln
 
Zitat:

Zitat von N3ON
Hm, es geht hier aber um Time, nicht um Date ;)

Zitat:

Zitat von Delphi-Hilfe
type TTime = type TDateTime;

Merkst was? Wenn es nur um Uhrzeiten geht, sind das eben 0 Tage, die Berechnung bleibt die gleiche.
Schau Dir mal dies Beispiel an:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var Start, Ende, Differenz, DiffInSek: TTime;
begin
  Start    := StrToTime('10:20:00');
  Ende     := StrToTime('12:50:10');
  Differenz := Ende - Start;
  DiffInSek := Differenz * 24 * 60 * 60;
  ShowMessage(FormatDateTime('hh:nn:ss',Differenz) + #13#10 +
              Format('Enspricht %.0f Sekunden',[DiffInSek]));
end;

OldGrumpy 23. Okt 2007 22:12

Re: Datum in Integer umwandeln
 
Zitat:

Zitat von DeddyH
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var Start, Ende, Differenz, DiffInSek: TTime;
begin
[...]
  Differenz := Ende - Start;
  DiffInSek := Differenz * 24 * 60 * 60;
[...]
end;

War da nicht ein paar Posts weiter oben was mit
Delphi-Quellcode:
SecondsBetween()
? :)


Alle Zeitangaben in WEZ +1. Es ist jetzt 12:48 Uhr.
Seite 1 von 2  1 2      

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