![]() |
Differenz berechnen
Ich habe da mal 'ne Frage und die lautet:
Ich habe 2 Datumsdaten, die ich vergleichen möchte. Das heisst, ich lade ein Datum aus einer Datei und das andere hol ich mir mit DateToStr(Now). Nun möchte ich die Tage ausrechnen, die zwischen den beiden Daten liegen. Also ich habe zum Beispiel das heutige Datum '8.7.2003' und ein altes Datum '1.7.2003'. Nun würde ich gern die Differenz von den Tagen haben, also als Antwort '7 Tage'. Weis jemand vielleicht wie das geht? :love: Danke UC |
Re: Differenz berechnen
Okay, lassen wir mal strFileDatum das Datum aus der Datei im String-Format sein, dann geht es wie folgt:
Delphi-Quellcode:
...:cat:...
var
TagCount: Integer; begin TagCount := Trunc(Now) - Trunc(StrToDateTime(strFileDatum)); ShowMessage('Es sind ' + IntToStr(TagCount) + ' Tage.'); end; |
Re: Differenz berechnen
Irgenwie krieg ich das nicht so hin.
Bei mir sieht das so aus, nachdem alles geladen wurde:
Delphi-Quellcode:
Nun würde ich gern im Label3 das Stehen haben: '7 Tage'
//Label1
AltesDatum.Caption:='1.7.2003', //Label2 AktuellesDatum.Caption:='8.7.2003' Gibt es da vielleicht ein Beispiel oder verstehe ich sakuras Code einfach nicht :| :love: Danke UC |
Re: Differenz berechnen
Tach auch,
Sakuras Code beantwortet die Frage schon. Hab mal deine Bezeichnung im Code eingesetzt.
Delphi-Quellcode:
Ich denke das willst du haben, oder?
var
TagCount: Integer; begin TagCount := Trunc(AktuellesDatum.Caption) - Trunc(StrToDateTime (AltesDatum.Caption)); Label3.Caption := 'Es sind ' + IntToStr(TagCount) + ' Tage.'; end; Zur Erklärung: Der Ganzzahlige Teil von TDateTime gaben die Tage an. Du musst nur die Tage des alten Datums von den Tagen vom aktuellen Datum subtrahieren. mfg Daniel |
Re: Differenz berechnen
Hallo,
vielleicht ein verständlicherer Weg. Unit "DateUtils" einbinden!
Delphi-Quellcode:
Grüsse, Daniel :hi:
procedure TForm1.Button22Click(Sender: TObject);
begin Label3.Caption := IntToStr(DaysBetween( StrToDate(Label1.Caption), StrToDate(Label2.Caption))); end; |
Re: Differenz berechnen
Bei mir kommt jetzt Inkompatiblke Typen nach dem
TagCount := Trunc(AktuellesDatum.Caption) Was ist denn nun schon wieder das Problem? :love: Danke UC |
Re: Differenz berechnen
Zitat:
|
Re: Differenz berechnen
Hallo,
Du musst auch AktuellesDatum, sowie auch AltesDatum mit StrToDateTime umwandeln. Grüsse, Daniel :hi: |
Re: Differenz berechnen
Zitat:
Grüsse, Daniel :hi: |
Re: Differenz berechnen
Sorry, da hab ich was vergessen, der code sollte so aussehen:
Delphi-Quellcode:
"Trunc" verlangr einen Fließkommawert, ich hab ihm aber einen String gegeben.
Source:
var TagCount: Integer; begin TagCount := Trunc(StrToDateTime(AktuellesDatum.Caption)) - Trunc(StrToDateTime(AltesDatum.Caption)); Label3.Caption := 'Es sind ' + IntToStr(TagCount) + ' Tage.'; end; So sollte es aber funktionieren. |
Re: Differenz berechnen
Zitat:
Bei D4 gibt es die trotzdem nicht, oder liegt die noch in irgendeinem versteckten Ordner oder auf CD? PS: Bei Borland weis man nie :lol: |
Re: Differenz berechnen
Danke Sanchez0815
Dein Code hat super funktioniert :thuimb: ,na gut ist ja eher sakuras Code, aber trotzdem :thuimb: |
Re: Differenz berechnen
Zitat:
Grüsse, Daniel :hi: |
Re: Differenz berechnen
Da gibt es jetzt doch noch ein Problem, denn die Labels sehen nicht so aus: 9.7.2003, denn dann würde der Code gehen, sondern die Labels sehen so aus: 09.07.2003 und da kommt immer die Meldung, das die Labels kein richtiges Datum sind, obwohl ich die mit DateToStr(Now) geholt habe.
Kann mir das vielleicht einer erklären, wie ich das Problem lösen kann? :love: Danke UC |
Re: Differenz berechnen
Ich denke, so sieht das Standard-Datumsformat auch aus: DD-MM-YYYY
Ich glaube das Format lässt sich irgendwie umstellen, hab es aber noch nie gemacht. mfg Daniel |
Re: Differenz berechnen
Zitat:
Grüsse, Daniel :hi: |
Re: Differenz berechnen
Versuch dein Glück mal mit EncodeDate bzw. TryEncodeDate.
|
Re: Differenz berechnen
Da muss ich echt ein wenig staunen was ihr euch da so ausdenke :freak:
Was wandelt ihr eine TDatetime in einen String um und wollt damit rechnen? Now und Date geben ein TDatetime zurück, das zweite Datum kann man sich per StrtoDate zu einem TDatetime machen. Dann zieht man den einen Wert vom anderen ab und man hat die Tage! :dancer: :mrgreen: :dancer2: Ups hab gesehen einer hats richtig gemacht, zu spät für mich geh pennen :witch: |
Re: Differenz berechnen
:oops: Und wie sieht der Code nun richtig aus, damit es funktioniert :?:
|
Re: Differenz berechnen
Bitte helft mir?
:love: Danke UC |
Re: Differenz berechnen
Was ist denn da so schwer:
Delphi-Quellcode:
Wandel beide Daten mit StrToDate in einen TDateTiem Wert um und dann nimmst du DaysBetween und du hast die Tage dazwischen als Integer.
//Label1
AltesDatum.Caption:='1.7.2003', //Label2 AktuellesDatum.Caption:='8.7.2003' |
Re: Differenz berechnen
Hallo Uncle Cracker,
Luckie hat Recht! aber so sollte es glaube ich sein.
Delphi-Quellcode:
bye
function DaysBetween2(Datetime1, DateTime2: TDateTime): Integer;
begin if DateTime1 < Datetime2 then begin Result := Trunc(DateTime2 - DateTime1); end else begin Result := Trunc(DateTime1 - DateTime2); end; end; |
Re: Differenz berechnen
Thx 2 all
Hab's nun dank eurer Hilfe endlich begriffen und hinbekommen (hat aber 'ne Weile gedauert) :love: :love: :love: |
Re: Differenz berechnen
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:23 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-2025 by Thomas Breitkreuz