date.c 830 Bytes
#include "date.h"

static int days_in_month[2][13] = {
    {0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31},
    {0, 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31},
};

int day_in_year(int day, int month, int year)
{
        int i, leap;

        leap = leap_year(year);
        for (i = 1; i < month; i++)
                day += days_in_month[leap][i];
        return (day);
}

int day_in_week(int day, int month, int year)
{
        long temp;

        temp = (long)(year - 1) * 365 + leap_years_since_year_1(year - 1)
            + day_in_year(day, month, year);
        if (temp < FIRST_MISSING_DAY)
                return ((temp - 1 + SATURDAY) % 7);
        if (temp >= (FIRST_MISSING_DAY + NUMBER_MISSING_DAYS))
                return (((temp - 1 + SATURDAY) - NUMBER_MISSING_DAYS) % 7);
        return (THURSDAY);
}