Category : C Source Code
Archive   : TODAY10.ZIP
Filename : DATETX.C
Output of file : DATETX.C contained in archive : TODAY10.ZIP
* 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);
}
Very nice! Thank you for this wonderful archive. I wonder why I found it only now. Long live the BBS file archives!
This is so awesome! 😀 I’d be cool if you could download an entire archive of this at once, though.
But one thing that puzzles me is the “mtswslnkmcjklsdlsbdmMICROSOFT” string. There is an article about it here. It is definitely worth a read: http://www.os2museum.com/wp/mtswslnk/