25 lines
810 B
C
25 lines
810 B
C
#include <stdio.h>
|
|
#include <stdlib.h>
|
|
|
|
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;
|
|
}
|