|
|
DataMuseum.dkPresents historical artifacts from the history of: DKUUG/EUUG Conference tapes |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about DKUUG/EUUG Conference tapes Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - metrics - downloadIndex: T d
Length: 2778 (0xada)
Types: TextFile
Names: »datetx.c«
└─⟦b20c6495f⟧ Bits:30007238 EUUGD18: Wien-båndet, efterår 1987
└─⟦this⟧ »EUUGD18/General/Date/datetx.c«
#
/*
* 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);
}