Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi Start- und Enddatum einer Kalenderwoche ermitteln (https://www.delphipraxis.net/13281-start-und-enddatum-einer-kalenderwoche-ermitteln.html)

JesterX 15. Dez 2003 14:34


Start- und Enddatum einer Kalenderwoche ermitteln
 
Hallo zusammen,

ich möchte aus einer Datenbank bestimmte Records raussuchen, die innerhalb einer bestimmten Kalenderwoche liegen.
Der User soll lediglich KW 1 bis 52 eingeben müssen und mein Query soll dann das jeweilige Start- und Enddatum der Abfrage selbst ermitteln. Hat jemand eine Ahnung wie ich das anstellen könnte?

Gruss
Holger

choose 15. Dez 2003 14:42

Re: Start- und Enddatum einer Kalenderwoche ermitteln
 
Hallo JesterX,

schau mal in der Delphi Online-Hilfe (OH) unter der Unit DateUtils nach den Funktionen StartOfTheWeek und EndOfTheWeek nach. Ich bin mir leider nicht ganz sicher, ob diese Routinen bei D6 vorhanden sind (bei D5 jedenfalls nicht).

EDIT: Ups, tatsächlich müssen die Funktionen mit dem unbestimmten Artikel verwendet werden: StartOfAWeek bzw EndOfAWeek...

Garby 15. Dez 2003 14:42

Re: Start- und Enddatum einer Kalenderwoche ermitteln
 
Hallo,

welche Datenbank bzw. welche Komponenten verwendest du?

Leuselator 15. Dez 2003 14:44

Re: Start- und Enddatum einer Kalenderwoche ermitteln
 
Weil Weihnachten naht (:-)) ,als Ansatz hier ein bisserl source von mir, den Rest (Umkehrung von GetKalenderwoche) mußt Du Dir dann selbst basteln
Delphi-Quellcode:
function VierterJanuar(DasDatum : TDate):TDate;
begin
  Result := StrToDate('04.01.'+copy(DateToStr(DasDatum),7,MaxInt));
end;

function MyDayOfWeek(DasDatum: TDateTime):Integer;
begin
  Result := IntIf((DayOfWeek(DasDatum)-1 > 0),DayOfWeek(DasDatum)-1,7);
end;

function GetKalenderWoche(DasDatum:TDateTime): Integer;
var ErsterMontag : TDate;
begin
  ErsterMontag := VierterJanuar(DasDatum)-MyDayOfWeek(VierterJanuar(DasDatum))+1;
  if DasDatum < ErsterMontag
    then ErsterMontag := VierterJanuar(DasDatum-10)-MyDayOfWeek(VierterJanuar(DasDatum-10))+1;
  Result := (trunc(DasDatum-ErsterMontag) div 7)+1;
  if Result = 53 then begin
    if (DasDatum-MyDayOfWeek(DasDatum)+1) = (VierterJanuar(GetLastDay(DasDatum)+1)-MyDayOfWeek(VierterJanuar(GetLastDay(DasDatum)+1))+1)
    then Result := 1;
  end;
end;
Gruß

negaH 15. Dez 2003 15:29

Re: Start- und Enddatum einer Kalenderwoche ermitteln
 
Delphi-Quellcode:
function WeekOfDate(ADate: TDateTime): Integer;
var
  Day: Integer;
  Y,M,D: Word;
begin
  Day := DayOfWeekGerman(ADate);
  DecodeDate(ADate +4 -Day, Y, M, D);
  Result := Round(((ADate +8 -Day) - EncodeDate(Y, 1, 1)) / 7);
end;

function DateOfWeek(AYear, AWeek: Word): TDateTime;
begin
  Result := EncodeDate(AYear, 1, 1);
  Result := Result - (DayOfWeek(Result -2) +3) mod 7 +3 + (AWeek -1) * 7;
end;

function WeeksOfYear(AYear: Word): Integer;
var
  D: TDateTime;
begin
  D := EncodeDate(AYear+1, 1, 1); // 1.1. des folgenden Jahres
  Result := WeekOfDate(D);        // KW
  if Result = 1 then
  begin
    D := D - 7;                   // 1 KW zurück
    Result := WeekOfDate(D);
  end;
end;

function DayOfWeekGerman(ADate: TDateTime): Integer;
begin
  Result := DayOfWeek(ADate) -1;
  if Result <= 0 then Result := 7;
end;

function WeekStart(ADate: TDateTime; German: Boolean): TDateTime;
begin
  if German then Result := ADate - (DayOfWeekGerman(ADate) -1)
    else Result := ADate - (DayOfWeek(ADate) -1);
end;
WeekOfDate() ist die Funktion die du suchst.

Gruß Hagen

JesterX 16. Dez 2003 13:00

Re: Start- und Enddatum einer Kalenderwoche ermitteln
 
Besten Dank.
Ihr habt mir sehr geholfen...

Gruss
Holger

:xmas:


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