AGB  ·  Datenschutz  ·  Impressum  







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

Zwei Uhrzeiten vergleichen?

Ein Thema von smart · begonnen am 3. Apr 2006 · letzter Beitrag vom 4. Apr 2006
Antwort Antwort
Benutzerbild von smart
smart

Registriert seit: 19. Dez 2004
Ort: Bochum
1.266 Beiträge
 
Delphi 2007 Professional
 
#1

Zwei Uhrzeiten vergleichen?

  Alt 3. Apr 2006, 18:25
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.
If (TimeToStr(Now) > '17:55:10' ) And (TimeToStr(Now) < '17:55:10' + '20' ) Then Button1Click(Sender); Geht nicht.

Gruß
Heike
Heike Kretschmann
Viele Grüße aus Bochum

kaum denkt man alles ist fertig, da fängt man wieder von Vorn an.
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#2

Re: Zwei Uhrzeiten vergleichen?

  Alt 3. Apr 2006, 18:28
Zitat:
Geht nicht.
Ich habe zwar ein englisches Delphi, aber selbst das hat mir noch nie als Fehlermeldung: "Does not work" ausgegeben. Wenn du dir dei fehlermeldung mal in Ruhe durchliest kommst du vielleivht schon von alline drauf, warum das nicht geht.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.157 Beiträge
 
Delphi 12 Athens
 
#3

Re: Zwei Uhrzeiten vergleichen?

  Alt 3. Apr 2006, 18:59
'17:55:10' + '20'

Kann nicht funktionieren ... '17:55:10' + '20' ist nicht '17:55:30', sondern '17:55:1020'
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Benutzerbild von ste_ett
ste_ett

Registriert seit: 10. Sep 2004
Ort: Dülmen
464 Beiträge
 
Delphi 7 Professional
 
#4

Re: Zwei Uhrzeiten vergleichen?

  Alt 3. Apr 2006, 19:08
Now() und
EncodeTime() leisten hierbei gute Dienste.

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;
Stefan
"Geht nicht!" ist keine Fehlerbeschreibung und "Hab ich schon versucht!" keine Antwort!

Hey, it compiles! Ship it!
  Mit Zitat antworten Zitat
Benutzerbild von mschaefer
mschaefer

Registriert seit: 4. Feb 2003
Ort: Hannover
2.029 Beiträge
 
Delphi XE3 Enterprise
 
#5

Re: Zwei Uhrzeiten vergleichen?

  Alt 3. Apr 2006, 19:32
Moin, Spätmoin zusammen,

Natürlich ist Stefan an der Lösung...

Zu Encode Time ein Copy aus der Hilfe:
Delphi-Quellcode:
function EncodeTime(Hour, Min, Sec, MSec: Word): TDateTime;
function TryEncodeTime(Hour, Min, Sec, MSec: Word; out Time: TDateTime): Boolean;
So nun zum Beispiel mit EncodeTimw
     EncodeTime(0, 20, 0, 0); Das generiert einen Wert von 20 Minuten, aber das Prinzip ist natürlich geklärt.
     EncodeTime(0, 0, 20, 0); So kommt es auf die 20 Sekunden.


Viele Grüße in die Runde // Martin
Martin Schaefer
  Mit Zitat antworten Zitat
Benutzerbild von negaH
negaH

Registriert seit: 25. Jun 2003
Ort: Thüringen
2.950 Beiträge
 
#6

Re: Zwei Uhrzeiten vergleichen?

  Alt 3. Apr 2006, 20:11
Delphi-Quellcode:

Diff := Frac(Now) - EncodeTime(17, 55, 20);
if (Diff >= 0) and (Diff < 20 / 86400) then
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.

Gruß Hagen
  Mit Zitat antworten Zitat
Benutzerbild von smart
smart

Registriert seit: 19. Dez 2004
Ort: Bochum
1.266 Beiträge
 
Delphi 2007 Professional
 
#7

Re: Zwei Uhrzeiten vergleichen?

  Alt 4. Apr 2006, 09:06
Vielen Dank, für Euren zahlreichen Antworten. Ich habe das Ganze jetzt so gelöst:

Delphi-Quellcode:
Var
ZielTime, Diff: TTime;
. . .
ZielTime := StrToTime('10:00:00');
. . .
Diff := Frac(Now) - ZielTime;
if (Diff >= 0) and (Diff < 20 / 86400) then . . .;
Gruß
Heike
Heike Kretschmann
Viele Grüße aus Bochum

kaum denkt man alles ist fertig, da fängt man wieder von Vorn an.
  Mit Zitat antworten Zitat
Thanatos81
(Gast)

n/a Beiträge
 
#8

Re: Zwei Uhrzeiten vergleichen?

  Alt 4. Apr 2006, 09:18
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
  Mit Zitat antworten Zitat
Benutzerbild von smart
smart

Registriert seit: 19. Dez 2004
Ort: Bochum
1.266 Beiträge
 
Delphi 2007 Professional
 
#9

Re: Zwei Uhrzeiten vergleichen?

  Alt 4. Apr 2006, 09:56
Zitat von Thanatos81:
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
Guter Tipp, nur wie kann ich EncodeTime in einer Datei speichern?

Gruß
Heike
Heike Kretschmann
Viele Grüße aus Bochum

kaum denkt man alles ist fertig, da fängt man wieder von Vorn an.
  Mit Zitat antworten Zitat
Benutzerbild von negaH
negaH

Registriert seit: 25. Jun 2003
Ort: Thüringen
2.950 Beiträge
 
#10

Re: Zwei Uhrzeiten vergleichen?

  Alt 4. Apr 2006, 10:13
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
  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 01:45 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