#include #include char *dow_n[] = {"Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"}; // The day of week returned by this algorithm starts from zero, and assumes that Sunday is the first day of the week. int sakamoto_dow(unsigned int year, unsigned int month, unsigned int day) { static int t[] = {0, 3, 2, 5, 0, 3, 5, 1, 4, 6, 2, 4}; year -= (month < 3); return (year + year / 4 - year / 100 + year / 400 + t[month - 1] + day) % 7; } int main(int argc, char **argv) { if (argc < 4) return 1; int c_year = strtol(argv[1], &argv[1], 10); int c_month = strtol(argv[2], &argv[2], 10); int c_day = strtol(argv[3], &argv[3], 10); int day = sakamoto_dow(c_year, c_month, c_day); printf("Day of week for (%i/%i/%i): %i (%s)\n", c_year, c_month, c_day, day, dow_n[day]); return 0; }