![]() |
Letze Monate auflisten
Hallo,
Ich stehe gerade auf dem Schlauch. Ich will von heute an die letzten 120 Tage zurück jeweils die Monate ausgeben mit Jahr. Also auch wenn es ein Jahr zurück geht. Wie kann ich das am einfachsten realisieren ? Danke. |
Re: Letze Monate auflisten
Now - 120 gibt das Datum vor 120 Tagen
DecodeDate zerlegt das Datum in Tag/Monat/Jahr Der Rest dazwischen sollte mit den Daten berechenbar sein. |
Re: Letze Monate auflisten
Hi,
jo das hab i schon aber die Month between gibts ja aber die Monate dann aufzählen mit Jahres umbruch ! Danke |
Re: Letze Monate auflisten
Ok, DateUtils hab' ich bei D5 noch nicht dabei...
Erster Monat/Jahr und aktueller Monat Jahr sollte (mit meinem Beispiel oder sonstigen Funktionen) gegeben sein. z.B. 11 2008 und 01 2009 Schleife: Monat erhöhen, wenn Monat 13 dann Monat 01 und Jahr +1 Schleifenabbruch: Monat Jahr > aktuell
Delphi-Quellcode:
Kann es hier nicht Testen, ist vieleicht auch umständlich? Aber sollte auf die Art funktionieren.
// decodeDate mit Now
MonatAktuell := Month; JahrAktuell := Year; // decodeDate mit Now - 120 Monat := Month; // Zuweisung natürlich unnötig, da man direkt Jahr := Year; // mit Month/Year als Variablen arbeiten kann MonatsListe.Clear; // z.B. eine TStringList while (MonatAktuell <= Monat) and (JahrAktuell <= Jahr) do begin MonatsListe.Add( IntToStr(Monat) +'.'+ IntToStr(Jahr)); Monat := Monat +1; if Monat >= 13 then begin Monat := 1; Jahr := Jahr +1; end; end; |
Re: Letze Monate auflisten
du brauchst doch einfach nur die TDateTime-Variable wieder 120-mal um 1 erhöhen und jeweils das dann mit DecodeDate umrechnen. dann bekommst immer die richtigen Tage/Monate/Jahre raus undm ußt dich nichtmal um die Tageszahl-pro-Monat kümmern.
PS: um mit 'nem Monatsanfang anzufangen
Delphi-Quellcode:
Var D, D2: Integer;
D2 := Trunc(Now - 120); D2 := D2 - DayOfTheMonth(D2) + 1; For D := D2 to Trunc(Now) do ... // DecodeDate(D, ...); |
Re: Letze Monate auflisten
Hallo,
vielleicht kann man es so angehen:
Delphi-Quellcode:
Gruß Hawkeye
var
DT, EndDate : TDateTime; begin DT := Now; EndDate := DT - 120; Memo.Clear; while (DT >= EndDate) do begin Memo.Lines.Add (FormatDateTime('mmmm yyyy', DT)); DT := IncMonth(DT, -1); end; end; |
Re: Letze Monate auflisten
Will er jetzt alle 120 Tage oder nur die Monate, die innerhalb der 120 Tage liegen. Wie letzteres hab ich es verstanden, ersteres sind alle anderen Beispiele. :gruebel:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:48 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