Path: utzoo!utgpu!jarvis.csri.toronto.edu!mailrus!iuvax!uxc.cso.uiuc.edu!uxc.cso.uiuc.edu!m.cs.uiuc.edu!s.cs.uiuc.edu!mccaugh From: mccaugh@s.cs.uiuc.edu Newsgroups: comp.lang.c Subject: Re: Date-Routines for C/UNIX ? HELP Message-ID: <207600039@s.cs.uiuc.edu> Date: 11 Sep 89 23:53:00 GMT References: <298@nixsin.UUCP> Lines: 64 Nf-ID: #R:nixsin.UUCP:298:s.cs.uiuc.edu:207600039:000:2153 Nf-From: s.cs.uiuc.edu!mccaugh Sep 11 18:53:00 1989 I tried mailing to Mathias, but no luck...anyway, here (at least) is the C code for day-of-week given the date as MMDDYYYY: #include #include #include void weekday(); static char *names[] = {"Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"}; main (argc,argv) int argc; char *argv[]; { if(argc!=2) fprintf(stderr, "usage: weekday mmddyyyy\n"); else weekday(argv[1]); } void weekday(date) /* given: date = "mmddyyyy" */ char *date; /* print: day of the week */ { char *dp, month[3], day[3], year[5]; int mm, dd, yyyy, reg_yrs, lp_yrs, i, yrs, days, days_more; long secs; static int reg_days[12] = {0,31,59,90,120,151,181,212,243,273,304,334}, lp_days[12] = {0,31,60,91,121,152,182,213,244,274,305,335}; struct tm *tp; dp = date; /* save */ month[0] = *dp++; month[1] = *dp++; month[2] = '\0'; /* get "mm" */ mm = atoi(month); /* into mm as int */ day[0] = *dp++; day[1] = *dp++; day[2] = '\0'; /* get "dd" */ dd = atoi(day); /* into dd as int */ for(i=0; i<4; i++) year[i] = *dp++; year[4] = '\0'; /* get "yyyy" into */ yyyy = atoi(year); /* yrs as an int */ yrs = yyyy - 1970; lp_yrs = yrs/4; if(yrs%4 == 3) lp_yrs++; reg_yrs = yrs - lp_yrs; days = 365*reg_yrs + 366*lp_yrs; /* = #(days) until given year */ if(yyyy%4 == 0) /* yyyy = leap-year */ days_more = lp_days[--mm]; /* = #(days) from start of yyyy */ else days_more = reg_days[--mm]; /* until month mm */ days += days_more + dd; /* = total of days altogether */ secs = 86400*days; /* = #(secs) of whole days since 1/1/70 */ tp = localtime(&secs); printf("%s falls on %s.\n", date, names[tp->tm_wday]); return; } e.g.: weekday 091119189 reports that the date is a Monday. Hope this helps! Scott McCaughrin Dept. of Computer Science University of Illinois Urbana, Illinois. USA