Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi DateTimePicker 2.Donnerstag im Monat anzeigen (https://www.delphipraxis.net/155883-datetimepicker-2-donnerstag-im-monat-anzeigen.html)

Uwe 111 11. Nov 2010 14:55

Delphi-Version: 2005

DateTimePicker 2.Donnerstag im Monat anzeigen
 
Hallo

Mein Problem ist, das ich immer den zweiten Donnerstag im Montat das Datum angezeigt bekomme. Wie kann man das hinbekommen?

MfG
Uwe 111

s.h.a.r.k 11. Nov 2010 15:00

AW: DateTimePicker 2.Donnerstag im Monat anzeigen
 
Hört sich für mich schwer danach an, dass man das selbst berechnen muss. Wobei es hier im Forum mal so einen Datums-Guru gab, der für alles mögliche Datums-Funktionen geschrieben hat.

stahli 11. Nov 2010 15:10

AW: DateTimePicker 2.Donnerstag im Monat anzeigen
 
Ich würde einfach mit EncodeDate den ersten Tag des Monats festlegen, mit DayOfTheWeek den Wochentag ermitteln und dann hochzählen.

shmia 11. Nov 2010 15:16

AW: DateTimePicker 2.Donnerstag im Monat anzeigen
 
Delphi-Quellcode:
// Weekday = Wochentag, 1=sonntag, 2=Montag,...
// position darf von 1 bis 4 liegen
function GetWochentagX(datum:TDateTime; Weekday, position:integer);
var
  monatsanfang : TDateTime;
begin
  monatsanfang := StartOfMonth(datum); // Monatanfang 01.mm.jjjj
 
  if (Weekday < 1) or (Weekday>7) then
    Weekday := 1; // Zur Sicherheit, damit keine Endlosschleife entsteht

  while Weekday <> DayOfWeek(monatsanfang) do
    monatsanfang := monatsanfang + 1.0; // nächster Tag

  result := monatsanfang + 7.0 * (position -1);
end;


// Hilfsfunktionen
function ReplaceDateParts(ADate:TDateTime; year, month, day: Word):TDateTime;
var
   y, m, d : Word;
begin
   DecodeDate(ADate, y, m, d);
   if year <> 0 then y := year;
   if month <> 0 then m := month;
   if day <> 0 then d := day;
   result := EncodeDate(y, m, d);
end;
function StartOfMonth(ADate:TDateTime):TDateTime;
begin
   Result := ReplaceDateParts(ADate, 0, 0, 1);
end;

Uwe 111 11. Nov 2010 16:17

AW: DateTimePicker 2.Donnerstag im Monat anzeigen
 
Hallo shmia

Besten Dank es funkioniert.:thumb:

MfG
Uwe 111

Wolfgang Mix 11. Nov 2010 17:10

AW: DateTimePicker 2.Donnerstag im Monat anzeigen
 
@ s.h.a.r.k
http://www.delphipraxis.net/141399-d...unktionen.html

Mfg

Wolfgang

s.h.a.r.k 11. Nov 2010 17:19

AW: DateTimePicker 2.Donnerstag im Monat anzeigen
 
Siehe da, er hat sich von selbst eingefunden :mrgreen:


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