Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Kalenderwoche aus Datum ermitteln (https://www.delphipraxis.net/2867-kalenderwoche-aus-datum-ermitteln.html)

FBrust 10. Feb 2003 20:15


Kalenderwoche aus Datum ermitteln
 
Hallo,

weiß jemand, wie man aus einem gegebenen Datum die dazugehörige Kalenderwoche ermittelt?

Grüsse
Frank

Yheeky 10. Feb 2003 20:53

Das sollte funktionieren:

Code:
function TForm1.NumOfWeek(ADate: TDateTime): Integer;
var
 d,m,y,h : Word;
 Jan: TDateTime;
 Days : Integer;
begin
 try
   DecodeDate(ADate, y, m, d);
   Jan:= EncodeDate(y, 1, 1);
   h:= DayOfWeek(Jan);
   Days:= Trunc(Int(aDate) - Jan) + 7 - DayOfWeek(ADate - 1);
   Inc(Days, 7 * Ord(h in [2..5]));
   Result := Days div 7;
   if Result = 0 then
     if (DayOfWeek(EncodeDate(Pred(y), 1, 1)) >5)
      or (DayOfWeek(EncodeDate(Pred(y), 12, 31)) <5) then
        Result:= 52
     else
       Result:= 53
   else
     if Result = 53 then
       if (h >5) or (DayOfWeek(EncodeDate(y, 12, 31)) <5) then
         Result:= 1;
 except
   Result := 0;
 end;
end;
Gruß Yheeky

FBrust 10. Feb 2003 21:04

Hallo Yheeky,

funktioniert, vielen Dank!! :P

Grüsse
Frank

Sharky 11. Feb 2003 07:58

Re: Kalenderwoche aus Datum ermitteln
 
Zitat:

Zitat von FBrust
Hallo,

weiß jemand, wie man aus einem gegebenen Datum die dazugehörige Kalenderwoche ermittelt?

Grüsse
Frank

Hai,

teste mal das hier:

Delphi-Quellcode:
function GetWeekOfYear(ADate:TDateTime):byte;
var Year,Month,Day : Word;
begin
  ADate:=ADate-((DayOfWeek(ADate)-2+7) mod 7)+ 7-4;
  DecodeDate(ADate, Year, Month, Day);
  Result:=(Trunc(ADate-EncodeDate(Year,1,1)) div 7)+1;
end;

hitzi 11. Feb 2003 11:21

Zitat Delphi OH:

Zitat:

Die Funktion WeekOfTheYear gibt die Woche des Jahres zurück, das durch einen TDateTime-Wert repräsentiert wird.

Unit

DateUtils

Kategorie

Datum/Zeit

function WeekOfTheYear(const AValue: TDateTime): Word; overload;
function WeekOfTheYear(const AValue: TDateTime; var AYear): Word; overload;

Beschreibung

Mit WeekOfTheYear können Sie die Woche des Jahres ermitteln, das durch den angegebenen TDateTime-Wert repräsentiert wird. WeekOfTheYear gibt einen Wert zwischen 1 und 53 zurück.

AYear gibt das Jahr mit der angegebenen Woche zurück. Dieser Wert darf nicht mit dem Jahr in AValue identisch sein. Der Grund liegt darin, daß die erste Woche eines Jahres als erste Woche definiert ist, von der mindestens vier Tage in das betreffende Jahr fallen. Ist also der erste Kalendertag eines Jahres der Freitag, Samstag oder Sonntag, gibt WeekOfTheYear für die ersten drei oder zwei Tage oder für den ersten Tag des Kalenderjahres die Woche des vorhergehenden Jahres zurück. Entsprechendes gilt am Jahresende: Ist der letze Kalendertag eines Jahres ein Montag, Dienstag oder Mittwoch, gibt WeekOfTheYear für die letzten drei oder zwei Tage bzw. den letzten Tag des Kalenderjahres den Wert 1 (erste Woche des nächsten Kalenderjahres) zurück.

Hinweis: WeekOfTheYear verwendet die Wochendefinition des ISO-Standards 8601. Demzufolge beginnt eine Woche am Montag und endet am Sonntag.
Hinweis: WeekOfTheYear gibt den gleichen Wert wie die Funktion WeekOf zurück.
MfG Hitzi

Gollum 11. Feb 2003 11:26

Hallo,

Zitat:

Zitat von hitzi
WeekOfTheYear

erst ab D7 (evtl. D6?)!

Der Fragesteller hat aber (nur) D5, also nützt ihm Dein Tipp wenig ;-)

hitzi 11. Feb 2003 11:37

Oh, das hatte ich nicht gesehen, dass er mit Delphi 5 arbeitet.

In Delphi 6 ist aber die Funktion auch schon mit drin. Evt. auch schon in Delphi 5. Kann ich aber nicht nachprüfen.

MfG Hitzi


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