![]() |
Differenz von Datum1 und Datum2
Sers
ich möchte die Differenz zwischen zwei Datum(s) herausfinden. (bsp. 01.01.09 und 30.01.09). Die beiden Datum-Werte bekomme ich über ein Editfeld, das gewöhnlicherweise ein string ist. Das hier ist mein (logischer) Lösungsansatz, der allerdings nicht funktioniert. var datum1, datum2 : TDateTime; tage : string; datum1 := StrToDate(Edit1.Text); datum2 := StrToDate(Edit2.Text); tage := DateToStr(datum1-datum2); Label1.Caption := 'Die Differenz zwischen Datum1 und Datum2 ist ' + tage + ' Tage'; Bitte um Hilfe 8) Mit freundlichen Grüßen yasR |
Re: Differenz von Datum1 und Datum2
Wieso sollte er auch funktionieren, wenn du die Differenz als Datum darstellst.
Ein Datum wird als Anzahl der Tage seit dem 1.1.1900 (oder dem 31.12.1899 ?) dargestellt. Der Nachkomma-Anteil beschreibt die Zeit (=0.5 = 12 Uhr Mittags). Ergo ist die Differenz dann dein Ergebnis, bzw. schon sehr nah drann. Wenn Du nun wissen willst wieviel Tage zwischen zwei Daten, dann solltest du dir vorher überlegen, wie z.B. die Differenz zwischen de, 1.9, 23:59 und dem 2.9 00:01 gehandhabt werden soll. Obwohl nur 2 Minuten zwischen den Daten liegen, sind es ja unterschiedliche Tage. |
Re: Differenz von Datum1 und Datum2
Oder man sieht sich die Unit DateUtils mal an, darin gibt es verschiedenen Funktionen um Zeit/Datumsabstände zu berechnen.
|
Re: Differenz von Datum1 und Datum2
|
Re: Differenz von Datum1 und Datum2
Hallo,
ich würds so lösen:
Delphi-Quellcode:
Ciao Chris
var datum1, datum2 : TDateTime;
tage : integer; datum1 := StrToDate(Edit1.Text); datum2 := StrToDate(Edit2.Text); if datum1 > datum2 then tage := Trunc(datum1) - Trunc(datum2) else tage := Trunc(datum2) - Trunc(datum1); Label1.Caption := 'Die Differenz zwischen Datum1 und Datum2 ist ' + IntToStr(tage) + ' Tage'; |
Re: Differenz von Datum1 und Datum2
Oder kürzer:
Delphi-Quellcode:
Wobei dann auch die oben angesprochenen 2 Minuten als ganzer Tag gelten :mrgreen:
Label1.Caption := Format('Die Differenz zwischen Datum1 und Datum2 ist %d Tage',
[abs(trunc(StrToDate(Edit1.Text)) - trunc(StrToDate(Edit2.Text)))]); |
Re: Differenz von Datum1 und Datum2
Noch kürzer geht es wirklich nicht :-)
Gruß Wolfgang |
Re: Differenz von Datum1 und Datum2
Zitat:
Delphi-Quellcode:
Label1.Caption := Format('Die Differenz zwischen Datum1 und Datum2 ist %d Tage',
[DaysBetween(StrToDate(Edit1.Text), StrToDate(Edit2.Text))]); |
Re: Differenz von Datum1 und Datum2
Liste der Anhänge anzeigen (Anzahl: 2)
Zitat:
Allerdings könntest man da auch logischer Weise selber drauf kommen, was und warum es nicht geht. > DateToString wandelt ein Datum im TDateTime-Format in einen String um Du hast aber da kein Datum (Zeit seit einem bestimmten Tag, siehe OH), sondern eine Differenz (unterschied zwischen 2 Zeiten) IntToStr + Trunc/Round, bzw. FloatToStr wären da passender. PS: dat teil hatte ich mir zufällig vor 3-4 Stündchen gebastelt und aus langer Weile noch etwas "aufgemotzt" :angel2: |
Re: Differenz von Datum1 und Datum2
Und noch etwas:
Für die Eingabe von Datum/Uhrzeit verwendet man ![]() Dann spart man sich die lästige Umwandelei. Sherlock |
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:50 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