![]() |
Zwei Uhrzeiten vergleichen?
Wie kann ich bei dem Vergleich zweier Uhrzeit, eine Dauer von 20 Sekunden hinzufügen. Beispiel: 17:55:10 soll ein Ereignis ausgeführt werden, aber 20 Sekunden lang.
Delphi-Quellcode:
Geht nicht.
If (TimeToStr(Now) > '17:55:10' ) And (TimeToStr(Now) < '17:55:10' + '20' ) Then Button1Click(Sender);
Gruß Heike |
Re: Zwei Uhrzeiten vergleichen?
Zitat:
|
Re: Zwei Uhrzeiten vergleichen?
'17:55:10' + '20'
Kann nicht funktionieren ... '17:55:10' + '20' ist nicht '17:55:30', sondern '17:55:1020' :zwinker: |
Re: Zwei Uhrzeiten vergleichen?
Delphi-Quellcode:
und
Now()
Delphi-Quellcode:
leisten hierbei gute Dienste. :)
EncodeTime()
Delphi-Quellcode:
unit Unit1;
interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm1 = class(TForm) Button1: TButton; Button2: TButton; procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); procedure FormCreate(Sender: TObject); private { Private-Deklarationen } public { Public-Deklarationen } end; var Form1: TForm1; OldTime, TimeDiff: TTime; implementation {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject); begin ShowMessage('ja'); end; procedure TForm1.Button2Click(Sender: TObject); begin if (Now >= (OldTime + TimeDiff)) then Button1Click(Button1); end; procedure TForm1.FormCreate(Sender: TObject); begin OldTime := Now; TimeDiff := EncodeTime(0, 20, 0, 0); end; |
Re: Zwei Uhrzeiten vergleichen?
Moin, Spätmoin zusammen,
Natürlich ist Stefan an der Lösung... Zu Encode Time ein Copy aus der Hilfe:
Delphi-Quellcode:
So nun zum Beispiel mit EncodeTimw
function EncodeTime(Hour, Min, Sec, MSec: Word): TDateTime;
function TryEncodeTime(Hour, Min, Sec, MSec: Word; out Time: TDateTime): Boolean;
Delphi-Quellcode:
Das generiert einen Wert von 20 Minuten, aber das Prinzip ist natürlich geklärt.
EncodeTime(0, 20, 0, 0);
Delphi-Quellcode:
So kommt es auf die 20 Sekunden.
EncodeTime(0, 0, 20, 0);
Viele Grüße in die Runde // Martin |
Re: Zwei Uhrzeiten vergleichen?
Delphi-Quellcode:
Ein TDateTime ist eine Fließkommazahl mit Datum im Vorkommateil und Uhrzeit als Bruchteile eines Tages im Nachkommateil. Ein Tag hat 24 Stunden * 60 Minuten * 60 Sekunden == 86400. 20 / 86400 ist also exakt der Bruchteil eines Tages der 20 Sekunden darstellt.Diff := Frac(Now) - EncodeTime(17, 55, 20); if (Diff >= 0) and (Diff < 20 / 86400) then Gruß Hagen |
Re: Zwei Uhrzeiten vergleichen?
Vielen Dank, für Euren zahlreichen Antworten. Ich habe das Ganze jetzt so gelöst:
Delphi-Quellcode:
Gruß
Var
ZielTime, Diff: TTime; . . . ZielTime := StrToTime('10:00:00'); . . . Diff := Frac(Now) - ZielTime; if (Diff >= 0) and (Diff < 20 / 86400) then . . .; Heike |
Re: Zwei Uhrzeiten vergleichen?
Kleiner Tipp noch am Rande. Benutze nach Möglichkeit lieber EncodeTime, als StrToTime. StrToTime benutzt nämlich afair die Ländereinstellungen des Systems, und bei mir wäre 10:00:00 momentan 10:00:00 am. Daher würde dein Code auf meinem System zu einer Fehlermeldung führen, EncodeTime dagegen nicht ;-)
|
Re: Zwei Uhrzeiten vergleichen?
Zitat:
Gruß Heike |
Re: Zwei Uhrzeiten vergleichen?
Einfach den TDateTime Wert speichern. TDateTime = type Double, also eine stinknormale Fließkommazahl.
Andererseits bin ich mir da nicht so sicher das StrToDateTime() wirklich auf die aktuellen MEZ Einstellugen des Systemes reagiert ?! Du solltest die Aussage von "smart" nochmal genauer überprüfen. Gruß Hagen |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:33 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 by Thomas Breitkreuz