Вариант 1:

 

Code:

function WeekOfYear(ADate : TDateTime) : word;

var

day : word;

month : word;

year : word;

FirstOfYear : TDateTime;

begin

DecodeDate(ADate, year, month, day);

FirstOfYear := EncodeDate(year, 1, 1);

Result := Trunc(ADate - FirstOfYear) div7 + 1;

end;

 

 

procedure TForm1.Button1Click(Sender: TObject);

begin

ShowMessage(IntToStr(WeekOfYear(Date)));

end;

 

 


Вариант 2:

 

Code:

function WeekNum(const ADate: TDateTime): word;

var

Year: word;

Month: word;

Day: word;

begin

DecodeDate(ADate + 4 - DayOfWeek(ADate + 6), Year, Month, Day);

result := 1 + trunc((ADate - EncodeDate(Year, 1, 5) +

DayOfWeek(EncodeDate(Year, 1, 3))) / 7);

end;

 

 


Вариант 3:

 

Code:

function WeekOfYear(Dat: TDateTime): Word;

// Интерпретация номеров дней:

// ISO: 1 = Понедельник, 7 = Воскресенье

// Delphi SysUtils: 1 = Воскресенье, 7 = Суббота

var

Day,

Month,

Year: Word;

FirstDate: TDateTime;

DateDiff : Integer;

begin

day := SysUtils.DayOfWeek(Dat)-1;

Dat := Dat + 3 - ((6 + day) mod7);

DecodeDate(Dat, Year, Month, Day);

FirstDate := EncodeDate(Year, 1, 1);

DateDiff := Trunc(Dat - FirstDate);

Result := 1 + (DateDiff div7);

end;

 

 

 

 

Взято из https://forum.sources

 

Получитьномернеделиподате

Code:

var

FirstWeekDay: Integer = 2;

{ Wochentag, mit dem die Woche beginnt

(siehe Delphi-Wochentage)

2 : Montag (nach DIN 1355) }

FirstWeekDate: Integer = 4;

{ 1 : Beginnt am ersten Januar

4 : Erste-4 Tage-Woche (nach DIN 1355)

7 : Erste volle Woche }

 

{ liefert das Datum des ersten Tages der Woche }

{ get date of first day of week}

function WeekToDate(AWeek, AYear: Integer): TDateTime;

begin

Result := EncodeDate(AYear, 1, FirstWeekDate);

Result := Result + (AWeek - 1) * 7 - ((DayOfWeek(Result) + (7 - FirstWeekDay)) mod7);

end;

 

{ liefert die Wochennummer und das Jahr, zu dem die Woche gehort }

{ get weeknumber and year of the given week number}

procedure DateToWeek(ADate: TDateTime; var AWeek, AYear: Word);

var

Month, Day: Word;

begin

ADate := ADate - ((DayOfWeek(ADate) - FirstWeekDay + 7) mod7) + 7 - FirstWeekDate;

DecodeDate(ADate, AYear, Month, Day);

AWeek := (Trunc(ADate - EncodeDate(AYear, 1, 1)) div7) + 1;

end;

 

 

{Week to date example}

procedure TForm1.Button1Click(Sender: TObject);

begin

ShowMessage(FormatDateTime('dd.mm.yyyy', WeekToDate(51, 2000)));

end;

 

{Date to week example}

procedure TForm1.Button2Click(Sender: TObject);

var

week, year: Word;

begin

DateToWeek(now, week, year);

ShowMessage(IntToStr(week));

ShowMessage(IntToStr(year));

end;

 

Взято с сайта: https://www.swissdelphicenter

Добавить комментарий

Не использовать не нормативную лексику.

Просьба писать ваши замечания, наблюдения и все остальное,
что поможет улучшить предоставляемую информацию на этом сайте.

ВСЕ КОММЕНТАРИИ МОДЕРИРУЮТСЯ ВРУЧНУЮ, ТАК ЧТО СПАМИТЬ БЕСПОЛЕЗНО!


Защитный код
Обновить