62 lines
1.1 KiB
C
62 lines
1.1 KiB
C
|
#include <time.h>
|
||
|
|
||
|
#define DATE_STR "??? ??? ?? ??:??:?? ????\n"
|
||
|
|
||
|
static char *days[] = { "Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat" };
|
||
|
|
||
|
static char *months[] = { "Jan", "Feb", "Mar", "Apr", "May", "Jun",
|
||
|
"Jul", "Aug", "Sep", "Oct", "Nov", "Dec" };
|
||
|
|
||
|
static char *two_digits();
|
||
|
static char *four_digits();
|
||
|
|
||
|
char *
|
||
|
asctime(tm)
|
||
|
register struct tm *tm;
|
||
|
{
|
||
|
static char buf[32];
|
||
|
register char *pb = buf, *ps;
|
||
|
|
||
|
strcpy(pb, DATE_STR);
|
||
|
ps = days[tm->tm_wday];
|
||
|
while (*ps) *pb++ = *ps++;
|
||
|
pb++;
|
||
|
ps = months[tm->tm_mon];
|
||
|
while (*ps) *pb++ = *ps++;
|
||
|
pb++;
|
||
|
pb = two_digits(
|
||
|
two_digits(
|
||
|
two_digits(
|
||
|
two_digits(pb, tm->tm_mday),
|
||
|
tm->tm_hour),
|
||
|
tm->tm_min),
|
||
|
tm->tm_sec);
|
||
|
four_digits(pb, tm->tm_year+1900);
|
||
|
return(buf);
|
||
|
}
|
||
|
|
||
|
static char *
|
||
|
two_digits(pb, i)
|
||
|
register char *pb;
|
||
|
{
|
||
|
*pb = (i / 10) % 10 + '0';
|
||
|
if (*pb == '0') *pb = ' ';
|
||
|
pb++;
|
||
|
*pb++ = (i % 10) + '0';
|
||
|
return ++pb;
|
||
|
}
|
||
|
|
||
|
static char *
|
||
|
four_digits(pb, i)
|
||
|
register char *pb;
|
||
|
{
|
||
|
i %= 10000;
|
||
|
*pb++ = (i / 1000) + '0';
|
||
|
i %= 1000;
|
||
|
*pb++ = (i / 100) + '0';
|
||
|
i %= 100;
|
||
|
*pb++ = (i / 10) + '0';
|
||
|
*pb++ = (i % 10) + '0';
|
||
|
return ++pb;
|
||
|
}
|