Borland C++ Builder VCL FAQ - Как определить номер недели в году?

ОГЛАВЛЕНИЕ


Как определить номер недели в году?

Следует иметь в виду, что первая неделя в году может быть неполной.
int week_num;
Word year, month, day;
TDateTime dt = ...; // "подопытная" дата
dt.DecodeDate(&year,&month,&day); // раскладываем нашу дату на составляющие
TDateTime _1_jan(year,1,1); // 1-е января того года, которому соответствует дата
int _1_jan_day_of_week = (_1_jan.DayOfWeek()+5)%7; // день недели 1-го января
week_num = (int)(dt-TDateTime(year,1,1)+_1_jan_day_of_week)/7; // искомый номер недели(с 0)