|
Я делал так:
//определяем кол-во дней в целых годах
work = (unsigned int)365 * year + ((year + 3) >> 2);
//определяем кол-во дней в целых месяцах
cnt = month;
while(--cnt)
{
if((cnt == 2) && !(0x03 & year))
work++;
work += days[cnt-1];
};
//добавляем дни и находим остаток от деления на 7
work = (work + day + 4) % 7;
Здесь days[12] - массив, определяющий кол-во дней в каждом месяце,
work - unsigned int,
cnt - unsigned char,
в результате 0-пон, 1-вт и тд.
Работает начиная с 2000 года.
E-mail: info@telesys.ru