ISOWeeksInYear Routines
Most years have 52 weeks, but years that start on a Thursday and leap years that start on a Wednesday (or Thursday) have 53 weeks.

Unit
QESBPCSDateTime

Overloaded Variants
Function ISOWeeksInYear(const Year: Word): Integer;
Function ISOWeeksInYear(const Year: Integer): Integer;
Function ISOWeeksInYear(const DT: TDateTime): Integer;

Declaration
Function ISOWeeksInYear(const Year: Word): Integer;

Description
Based on code supplied by Niklas Astram. Most years have 52 weeks, but years that start on a Thursday and leap years that start on a Wednesday (or Thursday) have 53 weeks. Based on code supplied by Niklas Astram

Parameters
Year 4-digit year such as 1999.
DT Date to take year from.

Category
Date/Time Arithmetic Routines
Week Based Arithmetic Routines
Year Based Arithmetic Routines

Implementation

function ISOWeeksInYear (const Year: Word): Integer;
var
     DOW: Integer;
begin
     DOW := ISODayOfWeek (GetFirstDayOfYear (Year));
     if (DOW = 4) or ((DOW = 3) and IsLeapYear (Year)) then
          Result := 53
     else
          Result := 52;
End;

Declaration
Function ISOWeeksInYear(const Year: Integer): Integer;

Implementation

function ISOWeeksInYear (const Year: Integer): Integer;
var
     DOW: Integer;
begin
     DOW := ISODayOfWeek (GetFirstDayOfYear (Year));
     if (DOW = 4) or ((DOW = 3) and IsLeapYear (Year)) then
          Result := 53
     else
          Result := 52;
End;

Declaration
Function ISOWeeksInYear(const DT: TDateTime): Integer;

Implementation

function ISOWeeksInYear (const DT: TDateTime): Integer; overload;
begin
     Result := ISOWeeksInYear (Date2Year (DT));
End;


HTML generated by Time2HELP
http://www.time2help.com