const int ltDays[] = {0, 3, 2, 5, 0, 3, 5, 1, 4, 6, 2, 4};
typedef enum
{
wdError = -1,
wdSunday = 0,
wdMonday = 1,
wdTuesday = 2,
wdWednesday = 3,
wdThursday = 4,
wdFriday = 5,
wdSaturday = 6
} WeekDay;
WeekDay GetWeekDay(int vnYear, int vnMonth, int vnDay )
{
if ((vnMonth<1) || (vnMonth>12) || (vnDay<1) || (vnDay>31) || (vnYear<0))
return wdError;
if ( vnMonth < 3 )
vnYear--;
return (WeekDay)((vnYear + (vnYear>>2) - (vnYear/100) + (vnYear/400) + ltDays[vnMonth-1] + vnDay) %7);
}