Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Letzter Tag des Monats bestimmen (https://www.delphipraxis.net/102798-letzter-tag-des-monats-bestimmen.html)

HolgerCW 5. Nov 2007 10:13


Letzter Tag des Monats bestimmen
 
Hallo zusammen,

ich habe ein Datum, z.B. den 25.02.2008.

Wie kann ich nun den letzten Tag dieses Monats bestimmen ?

Gruss

Holger

eddy 5. Nov 2007 10:17

Re: Letzter Tag des Monats bestimmen
 
Hallo Holger,

ich nutze das:


Delphi-Quellcode:
function LstDayOfMonth(dt : TDateTime) : TDateTime;
var
  DayTable : PDayTable;    // siehe SysUtils
begin
  DecodeDate(dt, jj, mm, tt);
  DayTable := @MonthDays[IsLeapYear(jj)];   // schaltjahrabhängig Zuweisung der Tabelle
  tt := DayTable^[mm];
  Result := EncodeDate(jj, mm, tt);
end;
mfg
eddy

marabu 5. Nov 2007 10:30

Re: Letzter Tag des Monats bestimmen
 
Hallo,

hier noch eine Alternative:

Delphi-Quellcode:
function Ultimo(year, month: Word): TDate;
begin
  Result := EncodeDate(year, month, {DateUtils.}DaysInAMonth(year, month));
end;
Grüße vom marabu

HolgerCW 5. Nov 2007 10:32

Re: Letzter Tag des Monats bestimmen
 
Das funktioniert wunderbar.

Hast Du vielleicht auch die Funktion für den ersten Tag im Monat ?

Gruss

Holger

b1zZ 5. Nov 2007 10:36

Re: Letzter Tag des Monats bestimmen
 
Zitat:

Zitat von HolgerCW
Das funktioniert wunderbar.

Hast Du vielleicht auch die Funktion für den ersten Tag im Monat ?

Gruss

Holger

Zitat:

Zitat von marabu

Delphi-Quellcode:
function Ultimo(year, month: Word): TDate;
begin
  Result := EncodeDate(year, month, 1);
end;

Oder möchtest du den 1ten Wochentag des Monats haben?

HolgerCW 5. Nov 2007 10:37

Re: Letzter Tag des Monats bestimmen
 
Vielen Dank

Gruss

Holger

negaH 5. Nov 2007 11:11

Re: Letzter Tag des Monats bestimmen
 
Bischen nachdenken hätte dir auch eine andere Lösng gebracht.

Welcher Tag kommt nach dem letzten Tag eines Monats ?
Wenn man von einem TDateTime -1 abzieht so hat man den vorherigen Tag als Datum.

Gruß Hagen

rwachtel 5. Nov 2007 12:28

Re: Letzter Tag des Monats bestimmen
 
Nur mal so in die Runde geworfen:

Es gibt auch noch die Unit DateUtils.pas, in der neben StartOfTheMonth und EndOfTheMonth noch viele weitere ISO 8601 entsprechende Datumsfunktionen zu finden sind.

...und was es da nicht gibt, findet man in der JCL...

Reinhard Kern 5. Nov 2007 15:29

Re: Letzter Tag des Monats bestimmen
 
Zitat:

Zitat von rwachtel
Nur mal so in die Runde geworfen:

Es gibt auch noch die Unit DateUtils.pas, in der neben StartOfTheMonth und EndOfTheMonth noch viele weitere ISO 8601 entsprechende Datumsfunktionen zu finden sind.

...und was es da nicht gibt, findet man in der JCL...

Warum immer alles so kompliziert wie möglich lösen? Bei mir haben bisher alle Monate mit dem 1. angefangen. Sogar ganz ohne Computer.

Gruss Reinhard

rwachtel 5. Nov 2007 15:40

Re: Letzter Tag des Monats bestimmen
 
..und Du hast jetzt auch den entsprechenden TDateTime-Wert für jeden Ersten zur Hand? :mrgreen:

b1zZ 5. Nov 2007 16:00

Re: Letzter Tag des Monats bestimmen
 
Also ich muss Reinhard schon bisschen Recht geben, wenn man sich Marabu's Bsp. anschaut ist es nicht gerade schwer davon abzuleiten
wie man an das "ERSTE" TDateTime des Monats kommt. (Sieht man ja an meinem Beitrag weiter oben auch)


Zitat:

Zitat von marabu

Delphi-Quellcode:
function Ultimo(year, month: Word): TDate;
begin
  Result := EncodeDate(year, month, {DateUtils.}DaysInAMonth(year, month));
end;

Als Verteidigung muss ich auch hinzufügen, dass ich ab und zu auch nicht den Wald vor lauter Bäume seh ;)

rwachtel 5. Nov 2007 16:26

Re: Letzter Tag des Monats bestimmen
 
Gerade in Deinem Beispiel muss ein vorhandener TDateTime-Wert erst dekodiert und dann wieder enkodiert werden.

Also warum denn immer das Rad neu erfinden? :gruebel: Alle erforderlichen Funktionen sind doch in aktuellen Delphi-Versionen enthalten.

b1zZ 5. Nov 2007 17:20

Re: Letzter Tag des Monats bestimmen
 
Mein hat sich auf das von Marabu bezogen, denn nach der Aussage hab ich angenommen, dass Holger die Version für den erhalt des letzten Tages gewählt hat und ich ihm einfach damit aufzeigen wollte das er im Prinzip nicht drüber nachgedacht hat, was er weiterfragt.
Sollte ich das jetzt falsch verstanden haben, tut es mir leid und ich nehme alles zurück.

HolgerCW 7. Nov 2007 11:54

Re: Letzter Tag des Monats bestimmen
 
Du hast Recht, ich hatte nicht weiter nachgedacht.

Ist natürlich logisch, das Jeder Monat bei 1 anfängt.

Gruss und Dank

Holger


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