Delphi-PRAXiS

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)

JSB 12. Jan 2005 14:55


Monat abziehen
 
Gibt es eine Möglichkeit vom "Now" einen Monat abzuziehen (sowas wie : Now-1Monat)???
30/31 ist zu ungenau...

glkgereon 12. Jan 2005 14:59

Re: Monat abziehen
 
pack das ganze mit DateTimeToStr in nen string, lies den monat gesondert aus, mach ihn um eins kleiner, und mit StrToDateTime zurück....

Sanchez 12. Jan 2005 15:01

Re: Monat abziehen
 
Alternativ könntest du
Delphi-Quellcode:
  ZeitPunkt := IncMonth(now, -1);
nehmen. :mrgreen:

JSB 12. Jan 2005 15:01

Re: Monat abziehen
 
danke probiere aus...

Leuselator 12. Jan 2005 15:02

Re: Monat abziehen
 
Was genau willst Du machen?

JSB 12. Jan 2005 15:02

Re: Monat abziehen
 
hatte letzten kommentar nicht gelesen...

ich will einem Query sagen das er datensetze zeigen soll wo das Feld Datum aus diesem Monat stammt

JSB 12. Jan 2005 15:11

Re: Monat abziehen
 
Zitat:

Zitat von Sanchez
Alternativ könntest du
Delphi-Quellcode:
  ZeitPunkt := IncMonth(now, -1);
nehmen. :mrgreen:

berechnet er korrekt alle Tage oder setzt er den Monat einfach nur einen Zurück?

Sanchez 12. Jan 2005 15:13

Re: Monat abziehen
 
Was hat dein Versuch ergeben?

JSB 12. Jan 2005 15:22

Re: Monat abziehen
 
12.12.04
also richtig oder?
(SICHER, is SICHER)

Leuselator 12. Jan 2005 15:24

Re: Monat abziehen
 
wenn Du mit MSSQL oder MSDE abeitest, sollte
SQL-Code:
SELECT * --was auch immer
  FROM Tabelle -- wo auch immer
 WHERE datepart(month,Datumsfeld) = datepart(month,getdate())
   AND datepart(year,Datumsfeld) = datepart(year,getdate())
das gewünschte Ergebnis erzielen - andere SQL-Dialekte haben ähnliche Funktionen zu bieten.
Gruß

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 22:12 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