home *** CD-ROM | disk | FTP | other *** search
- /*
- * Convert Date to Readable Format.
- *
- * Synopsis:
- *
- * char *datetxt(buffer, year, month, day);
- * char *buffer; -- Output string goes here
- * int year; -- Year, 1979 = 1979
- * int month; -- Month, January = 1
- * int day; -- Day, 1 = 1
- *
- * The readable date will be written into the outpub buffer, terminated by
- * a null byte. datetxt returns a pointer to the null byte.
- *
- * External routines called:
- *
- * nbrtxt (Number to ascii conversion)
- * copyst (String copy routine)
- */
-
- extern char *nbrtxt();
- extern char *copyst();
- extern char *datetxt();
-
- static char *daynames[] = {
- "Sunday", /* Sunday is day zero */
- "Monday",
- "Tuesday",
- "Wednesday",
- "Thursday",
- "Friday",
- "Saturday",
- };
-
- static char *monthnames[] = {
- "?Nomember?", /* Illegal month */
- "January",
- "February",
- "March",
- "April",
- "May",
- "June",
- "July",
- "August",
- "September",
- "October",
- "November",
- "December",
- };
-
- char *datetxt(buffer, year, month, day)
- char *buffer; /* Output goes here */
- int year; /* Year, 1979 = 1979 */
- int month; /* Month of year, Jan = 1 */
- int day; /* Day in the month 1 = 1 */
- /*
- * Output the date in readable format:
- * Tuesday, the third of October
- */
- {
- register char *op; /* Output pointer */
-
- op = buffer; /* Setup output pointer */
- op = copyst(op, daynames[dayofweek(year, month, day)]);
- op = copyst(op, ", the ");
- op = nbrtxt(op, day, 1);
- op = copyst(op, " day of ");
- op = copyst(op, monthnames[(month < 0 || month > 12) ? 0 : month]);
- op = copyst(op, ", ");
- if (year < 1000 || year >= 2000)
- return(nbrtxt(op, year, 0));
- else {
- op = nbrtxt(op, year/100, 0);
- op = copyst(op, " ");
- if ((year = year % 100) == 0)
- return(copyst(op, "hundred"));
- else
- return(nbrtxt(op, year, 0));
- }
- }
-
- dayofweek(year, month, day)
- int year; /* Year, 1978 = 1978 */
- int month; /* Month, January = 1 */
- int day; /* Day of month, 1 = 1 */
- /*
- * Return the day of the week on which this date falls: Sunday = 0.
- * Note, this routine is valid only for the Gregorian calender.
- */
- {
- register int yearfactor;
-
- yearfactor = year + (month - 14)/12;
- return (( (13 * (month + 10 - (month + 10)/13*12) - 1)/5
- + day + 77 + 5 * (yearfactor % 100)/4
- + yearfactor / 400
- - yearfactor / 100 * 2) % 7);
- }
-