![]() |
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 |
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... |
Re: Start- und Enddatum einer Kalenderwoche ermitteln
Hallo,
welche Datenbank bzw. welche Komponenten verwendest du? |
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:
Gruß
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; |
Re: Start- und Enddatum einer Kalenderwoche ermitteln
Delphi-Quellcode:
WeekOfDate() ist die Funktion die du suchst.
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; Gruß Hagen |
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