Delphi-PRAXiS
Seite 1 von 3  1 23   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Differenz von Datum1 und Datum2 (https://www.delphipraxis.net/140537-differenz-von-datum1-und-datum2.html)

yasR 20. Sep 2009 10:11


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

alzaimar 20. Sep 2009 10:17

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.

mkinzler 20. Sep 2009 10:20

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.

Wolfgang Mix 20. Sep 2009 10:38

Re: Differenz von Datum1 und Datum2
 
Erstmal herzlich willkommen in der DP :dp:

Schau mal hier unter DateUtils hier

Gruß

Wolfgang

Chris.R 21. Sep 2009 11:08

Re: Differenz von Datum1 und Datum2
 
Hallo,

ich würds so lösen:

Delphi-Quellcode:
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';
Ciao Chris

DeddyH 21. Sep 2009 11:15

Re: Differenz von Datum1 und Datum2
 
Oder kürzer:
Delphi-Quellcode:
Label1.Caption := Format('Die Differenz zwischen Datum1 und Datum2 ist %d Tage',
                  [abs(trunc(StrToDate(Edit1.Text)) - trunc(StrToDate(Edit2.Text)))]);
Wobei dann auch die oben angesprochenen 2 Minuten als ganzer Tag gelten :mrgreen:

Wolfgang Mix 21. Sep 2009 14:57

Re: Differenz von Datum1 und Datum2
 
Noch kürzer geht es wirklich nicht :-)

Gruß

Wolfgang

Tyrael Y. 21. Sep 2009 15:05

Re: Differenz von Datum1 und Datum2
 
Zitat:

Zitat von Wolfgang Mix
Noch kürzer geht es wirklich nicht :-)

Gruß

Wolfgang

Doch :D

Delphi-Quellcode:
Label1.Caption := Format('Die Differenz zwischen Datum1 und Datum2 ist %d Tage',
                  [DaysBetween(StrToDate(Edit1.Text), StrToDate(Edit2.Text))]);

himitsu 21. Sep 2009 15:09

Re: Differenz von Datum1 und Datum2
 
Liste der Anhänge anzeigen (Anzahl: 2)
Zitat:

Das hier ist mein (logischer) Lösungsansatz, der allerdings nicht funktioniert.
WAS funktioniert nicht ... tut mir Leid, aber nur "funktioniert nicht" ist keine ausreichende Fehlerbeschreibung :!:

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:

Sherlock 21. Sep 2009 15:14

Re: Differenz von Datum1 und Datum2
 
Und noch etwas:
Für die Eingabe von Datum/Uhrzeit verwendet man Delphi-Referenz durchsuchenTDateTimePicker.

Dann spart man sich die lästige Umwandelei.

Sherlock


Alle Zeitangaben in WEZ +1. Es ist jetzt 08:55 Uhr.
Seite 1 von 3  1 23   

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