![]() |
Vorjahr und Vormonat berechnen.
Kann mir jemand kurz helfen. Wie kann ich am einfachsten (wir gehen vom aktuellen Datum aus) den Vormonat und das Vorjahr ermitteln ?
wir haben den 12.12.2006 und ich benötige somit die 11 und November sowie das Vorjahr also 2005 Vielleich kann mir auch jemand ein kleines Beispiel machen. Vielen Dank Michael |
Re: Vorjahr und Vormonat berechnen.
Guten Morgen
Eventuell hilft dir dieses ein wenig weiter
Delphi-Quellcode:
procedure TForm1.Button3Click(Sender: TObject);
var heute, vormonat, vorjahr : TDate; jahr, monat, tag : word; begin heute := now; ShowMessage(DateToStr(now)); vormonat := now - 31; ShowMessage(DateToStr(vormonat)); vorjahr := now - 365; ShowMessage(DateToStr(vorjahr)); DecodeDate(vorjahr, jahr, monat, tag); ShowMessage(IntToStr(Jahr)); end; Zitat:
(Die Nachkommastellen bei TDateTime stellen die Uhrzeit in Dezimal dar) Alle Angaben ohne Gewähr, daher austesten (befasse mich gerade auch lernenderweise damit) Gruß, MJ |
Re: Vorjahr und Vormonat berechnen.
das probleme daran ist nur, das bei monaten mit 30 tagen, dem februar, und schaltjahren das ergebniss nicht stimmt
|
Re: Vorjahr und Vormonat berechnen.
Hallo,
probier es mal damit:
Delphi-Quellcode:
Hier fehlt nun noch die Überprüfung in den Abfragen Monatlich und Jährlich, ob der Tag noch in dem neu Berechnetem Datum gültig ist.
// Bedeutung Intervalle :
// 1 <-> täglich // 2 <-> wöchentlich // 3 <-> monatlich // 4 <-> jährlich case Intervall of 1: dNeuDatum := dDatum - 1; 2: dNeuDatum := dDatum - 7; 3: begin DecodeDate(dDatum,nYear,nMon, nDay); if nMon - 1 < 1 then begin nYear := nYear - 1; nMon := 12; end else begin nMon := nMon - 1; end; dNeuDatum := EncodeDate(nYear,nMon + 1,nDay); end; 4: begin DecodeDate(dDatum,nYear,nMon, nDay); dNeuDatum := EncodeDate(nYear - 1 ,nMon,nDay); end; end; also eine Abfrage der Art:
Delphi-Quellcode:
if nDay > DaysInAMonth(nYear,nMon) then begin
??? end; Gruß Jörg |
Re: Vorjahr und Vormonat berechnen.
Allgemein Danke für die Antworten
Gruss Michael |
Re: Vorjahr und Vormonat berechnen.
Wie wäre es damit?
Delphi-Quellcode:
Ist jetzt gerade aus der Hand getippt, bin mir z.B. bei der Reihenfolge der Parameter für DecodeDate nicht sicher. AUch über vTag müsste man evtl. nachdenken ;-)
procedure VorWerte(datum: TDateTime; var vTag, vMonat, vJahr: Word);
begin DecodeDate(datum, vTag, vMonat, vJahr); //Überall eins abziehen dec(vTag); dec(vMonat); dec(vJahr); //von Januar nach Dezember if vMonat < 1 then vMonat := 12; //vom 1. des Monats zum letzten von vMonat if vTag < 1 then case vMonat of 1, 3, 5, 7, 8, 12: vTag := 31; 4, 6, 9, 11: vTag := 30; 2: begin //Februar im Schaltjahr oder nicht? if IsLeapYear(vJahr) then vTag := 29 else vTag := 28; end; end; end; |
Re: Vorjahr und Vormonat berechnen.
Hallo!
Schau die doch mal die DateUtils an... Da ist eigentlich alles drinn, was Du brauchst... mfg Frank :coder: |
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:10 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