AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Vorjahr und Vormonat berechnen.

Ein Thema von lemi4ever · begonnen am 12. Dez 2006 · letzter Beitrag vom 13. Dez 2006
Antwort Antwort
lemi4ever

Registriert seit: 20. Jun 2004
10 Beiträge
 
#1

Vorjahr und Vormonat berechnen.

  Alt 12. Dez 2006, 23:31
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
  Mit Zitat antworten Zitat
Maja Jessica

Registriert seit: 16. Apr 2005
Ort: Dortmund
95 Beiträge
 
Delphi 4 Standard
 
#2

Re: Vorjahr und Vormonat berechnen.

  Alt 12. Dez 2006, 23:59
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:
Der Typ TDate wird zur Darstellung eines Datums verwendet.

Unit

Controls

type TDate = type TDateTime;

Beschreibung

TDate repräsentiert den speziellen Typ eines TDateTime -Wertes ohne Dezimalstellen. Ein TDate-Wert gibt die Anzahl der Tage an, die seit dem 30.12.1899 vergangen sind.
Ziehst du von "Heute" 1 ab dann hast du "Gestern"

(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
  Mit Zitat antworten Zitat
Thorben_K

Registriert seit: 22. Okt 2006
Ort: Darmstadt
105 Beiträge
 
Delphi 2006 Professional
 
#3

Re: Vorjahr und Vormonat berechnen.

  Alt 13. Dez 2006, 07:21
das probleme daran ist nur, das bei monaten mit 30 tagen, dem februar, und schaltjahren das ergebniss nicht stimmt
Thorben
  Mit Zitat antworten Zitat
hsg

Registriert seit: 24. Apr 2006
Ort: Wustermark
354 Beiträge
 
Delphi 10.3 Rio
 
#4

Re: Vorjahr und Vormonat berechnen.

  Alt 13. Dez 2006, 07:40
Hallo,

probier es mal damit:
Delphi-Quellcode:
// 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;
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.
also eine Abfrage der Art:
Delphi-Quellcode:
 if nDay > DaysInAMonth(nYear,nMon) then begin
    ???
 end;

Gruß Jörg
  Mit Zitat antworten Zitat
lemi4ever

Registriert seit: 20. Jun 2004
10 Beiträge
 
#5

Re: Vorjahr und Vormonat berechnen.

  Alt 13. Dez 2006, 07:48
Allgemein Danke für die Antworten


Gruss

Michael
  Mit Zitat antworten Zitat
Thanatos81
(Gast)

n/a Beiträge
 
#6

Re: Vorjahr und Vormonat berechnen.

  Alt 13. Dez 2006, 08:22
Wie wäre es damit?

Delphi-Quellcode:
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;
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
  Mit Zitat antworten Zitat
Benutzerbild von Mavarik
Mavarik

Registriert seit: 9. Feb 2006
Ort: Stolberg (Rhld)
4.142 Beiträge
 
Delphi 10.3 Rio
 
#7

Re: Vorjahr und Vormonat berechnen.

  Alt 13. Dez 2006, 09:06
Hallo!

Schau die doch mal die DateUtils an...

Da ist eigentlich alles drinn, was Du brauchst...

mfg Frank
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:27 Uhr.
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