Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Differenz berechnen (https://www.delphipraxis.net/6363-differenz-berechnen.html)

Uncle Cracker 8. Jul 2003 11:03


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

sakura 8. Jul 2003 11:23

Re: Differenz berechnen
 
Okay, lassen wir mal strFileDatum das Datum aus der Datei im String-Format sein, dann geht es wie folgt:
Delphi-Quellcode:
var
  TagCount: Integer;
begin
  TagCount := Trunc(Now) - Trunc(StrToDateTime(strFileDatum));

  ShowMessage('Es sind ' + IntToStr(TagCount) + ' Tage.');
end;
...:cat:...

Uncle Cracker 8. Jul 2003 20:52

Re: Differenz berechnen
 
Irgenwie krieg ich das nicht so hin.

Bei mir sieht das so aus, nachdem alles geladen wurde:

Delphi-Quellcode:
//Label1
AltesDatum.Caption:='1.7.2003',
//Label2
AktuellesDatum.Caption:='8.7.2003'
Nun würde ich gern im Label3 das Stehen haben: '7 Tage'

Gibt es da vielleicht ein Beispiel oder verstehe ich sakuras Code einfach nicht :|


:love: Danke UC

Sanchez 8. Jul 2003 20:58

Re: Differenz berechnen
 
Tach auch,

Sakuras Code beantwortet die Frage schon. Hab mal deine Bezeichnung im Code eingesetzt.

Delphi-Quellcode:
var
  TagCount: Integer;
begin
  TagCount := Trunc(AktuellesDatum.Caption) - Trunc(StrToDateTime
                    (AltesDatum.Caption));

  Label3.Caption := 'Es sind ' + IntToStr(TagCount) + ' Tage.';
end;
Ich denke das willst du haben, oder?

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

Daniel B 8. Jul 2003 21:00

Re: Differenz berechnen
 
Hallo,

vielleicht ein verständlicherer Weg.
Unit "DateUtils" einbinden!
Delphi-Quellcode:
procedure TForm1.Button22Click(Sender: TObject);
begin
  Label3.Caption := IntToStr(DaysBetween(
    StrToDate(Label1.Caption), StrToDate(Label2.Caption)));
end;
Grüsse, Daniel :hi:

Uncle Cracker 8. Jul 2003 21:04

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

Uncle Cracker 8. Jul 2003 21:05

Re: Differenz berechnen
 
Zitat:

Zitat von Daniel B
Hallo,

vielleicht ein verständlicherer Weg.
Unit "DateUtils" einbinden!

Danke, doch bei Delphi 4 Standard gibt es die Komponente nicht :cry:

Daniel B 8. Jul 2003 21:06

Re: Differenz berechnen
 
Hallo,

Du musst auch AktuellesDatum, sowie auch AltesDatum mit StrToDateTime umwandeln.

Grüsse, Daniel :hi:

Daniel B 8. Jul 2003 21:07

Re: Differenz berechnen
 
Zitat:

Zitat von Uncle Cracker
Danke, doch bei Delphi 4 Standard gibt es die Komponente nicht :cry:

Das ist keine Komponente, sondern eine Unit, ganz oben bei Uses das noch mit dazu eintragen!

Grüsse, Daniel :hi:

Sanchez 8. Jul 2003 21:08

Re: Differenz berechnen
 
Sorry, da hab ich was vergessen, der code sollte so aussehen:

Delphi-Quellcode:
Source:

var
  TagCount: Integer;
begin
  TagCount := Trunc(StrToDateTime(AktuellesDatum.Caption))
                   - Trunc(StrToDateTime(AltesDatum.Caption));

  Label3.Caption := 'Es sind ' + IntToStr(TagCount) + ' Tage.';
end;
"Trunc" verlangr einen Fließkommawert, ich hab ihm aber einen String gegeben.

So sollte es aber funktionieren.

Uncle Cracker 8. Jul 2003 21:09

Re: Differenz berechnen
 
Zitat:

Zitat von Daniel B
Zitat:

Zitat von Uncle Cracker
Danke, doch bei Delphi 4 Standard gibt es die Komponente nicht :cry:

Das ist keine Komponente, sondern eine Unit, ganz oben bei Uses das noch mit dazu eintragen!

Grüsse, Daniel :hi:

Meinte ich ja.

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:

Uncle Cracker 8. Jul 2003 21:13

Re: Differenz berechnen
 
Danke Sanchez0815

Dein Code hat super funktioniert :thuimb: ,na gut ist ja eher sakuras Code, aber trotzdem :thuimb:

Daniel B 8. Jul 2003 21:16

Re: Differenz berechnen
 
Zitat:

Zitat von Uncle Cracker
Bei D4 gibt es die trotzdem nicht, oder liegt die noch in irgendeinem versteckten Ordner oder auf CD?

Hmm, blöd das, ab D6 ist die sicher dabei, aber 4 und 5 weiss ich es nicht, warscheinlich ist es wirklich erst ab 6 dabei, schade das...

Grüsse, Daniel :hi:

Uncle Cracker 9. Jul 2003 14:13

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

Sanchez 9. Jul 2003 14:44

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

Daniel B 9. Jul 2003 15:42

Re: Differenz berechnen
 
Zitat:

Zitat von Uncle Cracker
sondern die Labels sehen so aus: 09.07.2003

Dann besorg Dir D6 oder D7 und nimm meine Lösung, denn ich habe es mit 09.07.2003 gemacht. :mrgreen:

Grüsse, Daniel :hi:

Luckie 9. Jul 2003 16:25

Re: Differenz berechnen
 
Versuch dein Glück mal mit EncodeDate bzw. TryEncodeDate.

Touchdown 9. Jul 2003 22:40

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:

Uncle Cracker 10. Jul 2003 09:55

Re: Differenz berechnen
 
:oops: Und wie sieht der Code nun richtig aus, damit es funktioniert :?:

Uncle Cracker 10. Jul 2003 13:51

Re: Differenz berechnen
 
Bitte helft mir?


:love: Danke UC

Luckie 10. Jul 2003 17:54

Re: Differenz berechnen
 
Was ist denn da so schwer:
Delphi-Quellcode:
//Label1 
AltesDatum.Caption:='1.7.2003',
//Label2 
AktuellesDatum.Caption:='8.7.2003'
Wandel beide Daten mit StrToDate in einen TDateTiem Wert um und dann nimmst du DaysBetween und du hast die Tage dazwischen als Integer.

Duffy 10. Jul 2003 18:38

Re: Differenz berechnen
 
Hallo Uncle Cracker,
Luckie hat Recht! aber so sollte es glaube ich sein.
Delphi-Quellcode:
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;
bye

Uncle Cracker 11. Jul 2003 14:37

Re: Differenz berechnen
 
Thx 2 all

Hab's nun dank eurer Hilfe endlich begriffen und hinbekommen (hat aber 'ne Weile gedauert)


:love: :love: :love:

Daniel B 11. Jul 2003 15:40

Re: Differenz berechnen
 
Hallo,

ich habe hier noch ein paar Beispiele gefunden...

Grüsse, Daniel :hi:


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