AGB  ·  Datenschutz  ·  Impressum  







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

Datum / Zeit Vergleichen

Ein Thema von mymuschy · begonnen am 31. Okt 2006 · letzter Beitrag vom 4. Nov 2006
Antwort Antwort
Seite 2 von 2     12   
WARP4

Registriert seit: 3. Aug 2006
7 Beiträge
 
Delphi XE2 Professional
 
#11

Re: Datum / Zeit Vergleichen

  Alt 3. Nov 2006, 08:13
Hallo,

vielleicht hilft auch ein Blick in die ESBDATES - Library. Diese Library (ist eigentlich "nur" eine Unit die man einbinden muss) enthält für sowas eine Menge Arithmetik- und Konvertierungsfunktionen.
Original kommt sie von ESB-Consultancy, ist aber meines Wissens "Freeware". Google einfach mal danach...
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.275 Beiträge
 
Delphi 10.4 Sydney
 
#12

Re: Datum / Zeit Vergleichen

  Alt 3. Nov 2006, 08:31
Hallo,

wenn schon Time,
dann zu Beginn in eine lokale Variable packen,
sonst wird ja beim ersten Time (Vergleich) und beim zweiten u.U.
ein anderer Wert ermittelt (die Zeit läuft ja weiter).

Ein anderes Problem ist, dass Time auch die Millisekunden benutzt,
bei einem Vergleich könnte das Probleme geben.
Ich habe das über eine CutToMin Methode gelöst
Delphi-Quellcode:
function CutToMin(theTime: TDateTime): TDateTime;
var
  Hours, Min, Sec, MSec: Word;
begin
  DecodeTime(theTime, Hours, Min, Sec, MSec);
  Result:= EncodeTime(Hours, Min, Sec, 0)
end;
Heiko
Heiko
  Mit Zitat antworten Zitat
exploitbashor

Registriert seit: 1. Nov 2006
4 Beiträge
 
#13

Re: Datum / Zeit Vergleichen

  Alt 3. Nov 2006, 14:30
also jetzt läufts besser! ich habe den vergleich jetzt mit der funktion comparetime(a,b :TDateTime) gemacht und er funktioniert!

das einzige was immer noch nicht geht ist der überschlag der auf den nächsten tag angerechnet wird. da muss der fehler bei dem ausrechnen liegen...
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.275 Beiträge
 
Delphi 10.4 Sydney
 
#14

Re: Datum / Zeit Vergleichen

  Alt 3. Nov 2006, 15:40
Hallo,

Besorg die dunit,
füttere deine Testmethode mit Daten und debugge es einfach.

edit:
naja wolln wir mal nicht so sein

kommt dir überhaupt hier rein ?
if ((now < strtotime(frueh)) and (now > strtotime(spaet))) then NÖ!
Now kann nie kleiner UND grösser sein,
wenn schon, dann ODER

if ((now < strtotime(frueh)) OR (now > strtotime(spaet))) then Was ich hier generell vermisse, ist das Datum.
Es wird hier ja nur mit Zeit gerechnet.
Der Trick ist, einfach 1 (eins) dazuzuaddieren (=24 Stunden),
da brauchst vielleicht später.


Heiko
PS: Mit F8 setzt man breakpoints.
Heiko
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#15

Re: Datum / Zeit Vergleichen

  Alt 3. Nov 2006, 21:00
Hallo,

ich würde einen anderen Ansatz wählen. Ich definiere eine ParkZeit analog zu TDateTime. Ein ParkTag dauert dann genau so lange, wie die auf der Parkuhr bekannt gegebene gebührenpflichtige Zeit. Der Einfachheit nehme ich an, dass die gebührenpflichtige Zeit ein einziger zusammenhängender Tageszeitraum ist. Wäre das die Zeit von morgens 9:00 Uhr bis abends 18:00 Uhr und hätte ich für zwanzig Stunden bezahlt, dann liefert mir DateTimeToStr(ParkzeitEnde(20/24, 9/24, 18/24)) den Aufdruck für mein Park-Ticket:

Delphi-Quellcode:
function ParkzeitEnde(dtBezahlt, dtBeginn, dtEnde: TDateTime): TDateTime;
begin
  // Berechne Beginn der gebührenpflichtigen Parkzeit
  if TimeOf(Now) < dtBeginn then Result := DateOf(Now) + dtBeginn
  else if TimeOf(Now) >= dtEnde then Result := DateOf(Now) + dtBeginn + 1
  else Result := Now;
  // Wandle von DateTime in "ParkTage"
  Result := Trunc(Result) + (Frac(Result) - dtBeginn) / (dtEnde - dtBeginn);
  // Berechne Ende der Parkzeit
  Result := Result + dtBezahlt / (dtEnde - dtBeginn);
  // Wandle "ParkTage" in DateTime
  Result := Trunc(Result) + Frac(Result) * (dtEnde - dtBeginn) + dtBeginn;
end;
Getippt und nicht getestet.

Grüße vom marabu
  Mit Zitat antworten Zitat
exploitbashor

Registriert seit: 1. Nov 2006
4 Beiträge
 
#16

Re: Datum / Zeit Vergleichen

  Alt 4. Nov 2006, 19:09
danke für die viele hilfe, aber ich würds lieber so lassen wies ist, größtenteils funktionierts ja auch. das einzige was nicht geht ist irgendwie zwei zeiten zu subtrahieren... leider
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


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 11:30 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