Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Letzter Tag im Monat (Datum) ermitteln (https://www.delphipraxis.net/6736-letzter-tag-im-monat-datum-ermitteln.html)

1PM 20. Jul 2003 19:16


Letzter Tag im Monat (Datum) ermitteln
 
Hallo zusammen!
Wie kann ich das Datum des letzten Tages in einem Monat ermitteln?

Vielen Dank im voraus!

Gruß
1PM

merlin17 20. Jul 2003 19:29

Re: Letzter Tag im Monat (Datum) ermitteln
 
hallo,
Delphi-Quellcode:
function GetLastDayofMonth (const DT: TDateTime): TDateTime;
var
   D, M, Y: Word;
begin
   DecodeDate (DT, Y, M, D);
   case M of
      2:
      begin
         if IsLeapYear (Y) then
            D := 29
         else
            D := 28;
      end;
      4, 6, 9, 11: D := 30
      else
         D := 31;
   end;
   Result := EncodeDate (Y, M, D) + Frac (DT);
End;

function IsLeapYear (Year: Word): Boolean;
begin
   Result := ((Year and 3) = 0) and ((Year mod 100 > 0) or (Year mod 400 = 0))
End;
:-) thomas

[edit=Admin]Delphi-Tags eingefügt. Mfg, Daniel[/edit]

1PM 20. Jul 2003 20:03

Re: Letzter Tag im Monat (Datum) ermitteln
 
Vielen Dank Merlin! Werde es ausprobieren! :hello:


Gruß
1PM

eddy 20. Jul 2003 20:17

Re: Letzter Tag im Monat (Datum) ermitteln
 
Hallo 1PM,

hier noch ein Vorschlag:
Code:
function LstDayOfMonth(dt:TDateTime):TDateTime;
var
  t1,m1,j1 : word;
begin
  DecodeDate(dt,j1,m1,t1);
  if m1 = 12
    then m1 := 1
    else inc(m1);
  t1 := 1;
  dt := EncodeDate(j1,m1,t1);
  Result := dt - 1;
end;
mfg
eddy

eddy 11. Sep 2003 10:24

Re: Letzter Tag im Monat (Datum) ermitteln
 
Hallo Leute,

1PM hat mich freundlicherweise auf einen Fehler in meinem Vorschlag hingewiesen. Hier die korrekte Version:

Code:
function LstDayOfMonth(dt:TDateTime):TDateTime;
var
  t1,m1,j1 : word;
begin
  DecodeDate(dt,j1,m1,t1);
  if m1 = 12 then begin
    m1 := 1;
    inc(j1);
  end
  else inc(m1);
  t1 := 1;
  dt := EncodeDate(j1,m1,t1);
  Result := dt - 1;
end;
mfg
eddy


Alle Zeitangaben in WEZ +1. Es ist jetzt 09:18 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