Thema: Delphi Uhrzeiten vergleichen

Einzelnen Beitrag anzeigen

Tango

Registriert seit: 17. Apr 2011
Ort: Aachen
64 Beiträge
 
Delphi XE2 Starter
 
#18

AW: Re: Uhrzeiten vergleichen

  Alt 17. Okt 2014, 19:48
Da du ja deinen Timer nicht im Millisekundenrythmus ausführen kannst, wirst du nicht geneu vergleichen lassen können.

nimm die nächste Zeit (nächste volle stunde) und prüf so
If Trunc(Now) >= strtotime('16:00:00') then Ach ja, Now enthält auch noch die Tage(Monate,Jahre) ... die müßtest du erstmal rausrechnen.



[add]
ungetestet ... mal sehn, ob ich 'nen Denkfehler hab

(Frac(Time) >= StrToTime('06:00:00')) and (Frac(Time) < StrToTime('20:00:00'))
prüfen ob es ab 6°° und vor 20°° (also bis kurz nach 19°°) ist

Trunc(Frac(Time) * 24) > Trunc(Frac(LastTime) * 24)
Zeiten in Stunden umrechnen und vergleichen

Delphi-Quellcode:
Var LastTime: TDateTime; // am Besten im Private-Abschnitt von TForm1 deklarieren

Procedure TForm1.Timer1Timer(Sender: TObject);
  Var Time: TDateTime;

  Begin
    Time := Now;
    Label1.Caption := TimeToStr(Time);
    If (Frac(Time) >= StrToTime('06:00:00')) and (Frac(Time) < StrToTime('20:00:00'))
        and (Trunc(Frac(Time) * 24) > Trunc(Frac(LastTime) * 24)) Then Begin
      LastTime := Time;
      Showmessage(TimeToStr(Time));
    End;
  End;

// und nicht vergessen LastTime zu initalisieren
// LastTime := Now;
Um das ganze zu verstehen habe ich mal eine Beispiel erstellt, leider bekomme ich immer falsches Wert

Delphi-Quellcode:
procedure TForm1.Timer1Timer(Sender: TObject);
Var Time,LastTime: TDateTime;
begin
  If (Frac(Time) <= StrToTime('06:00:00')) and (Frac(Time) > StrToTime('14:00:00'))
        Then
        LastTime := now;
edit1.Text:= 'Frühschicht';
If (Frac(Time) <= StrToTime('14:00:01')) and (Frac(Time) > StrToTime('22:00:00'))
        Then
edit1.Text:= 'Spätschicht';
LastTime := Now ;
end;
end.
  Mit Zitat antworten Zitat