Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Monat abziehen (https://www.delphipraxis.net/37939-monat-abziehen.html)

Sanchez 12. Jan 2005 15:24

Re: Monat abziehen
 
Einen Unterschied würds doch IMHO erst machen, wenn du z.B. vom 30.3 einen Monat abziehst.

glkgereon 12. Jan 2005 15:26

Re: Monat abziehen
 
jo

ich hab ne kleine function dras gemacht *ggg*

mit schaltjahr und allem

Delphi-Quellcode:
function Schaltjahr(Year:Integer):Boolean;
begin
  Result:=((Year Mod 4 = 0) or (Year Mod 400 = 0))
          and not (Year Mod 100 = 0);
end;

function ChangeDate(Value:TDateTime; DayChange, MonthChange, YearChange: Integer):TDateTime;
var Temp: String;
    Mon, Year, Day:Integer;
begin
  Temp:=DateTimeToStr(Value);
  Day:=StrToInt(copy(Temp,1,2));
  Mon:=StrToInt(copy(Temp,4,2));
  Year:=StrToInt(copy(Temp,7,4));
  Day:=Day+DayChange;
  Mon:=Mon+MonthChange;
  Year:=Year+YearChange;
  if Day=0 then
    begin
    Dec(Mon);
    Case Mon of
    1,3,5,7,8,10: Day:=31;
    4,6,9,11: Day:=30;
    2:if Schaltjahr(Year)
      then Day:=29
      else Day:=28;
    end;
    end;
  if Mon=0 then
    begin
    Mon:=12;
    Dec(Year);
    end;
  Temp:=IntToStr(Day)+'.'+IntToStr(Mon)+'.'+IntToStr(Year);
  Result:=StrToDateTime(Temp)+(Value-Trunc(Value));
end;
fehler sind möglich, hab aber spontan keine gefunden ;)

übergeben wird ein DateTime-Wert

bei den werten Value,0,2,-1 wird value um 2 moinate nach vorne und 1 jahr nach hinten versetzt und zurückgegeben

aufruf zb so

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var Value: TDateTime;
begin
  Value:=DateTimePicker1.DateTime;
  Value:=ChangeDate(Value,0,-1,0);
  ShowMessage(DateTimeToStr(Value));
end;

Sanchez 12. Jan 2005 15:32

Re: Monat abziehen
 
Was gefällt dir den an den Funktionen IncDay, IncMonth, IncYear, ... nicht?
Du erfindest da das Rad nochmals.

glkgereon 12. Jan 2005 15:36

Re: Monat abziehen
 
An denen gefällt mir net das ich net wusste das sie existieren :mrgreen:

aber machen die das mit schaltjahr und so?
alles dabei?


Alle Zeitangaben in WEZ +1. Es ist jetzt 08:01 Uhr.
Seite 2 von 2     12   

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