[3ae31e9] | 1 | /*
|
---|
| 2 | =============================================================================
|
---|
| 3 | today.c -- print the date and time of day
|
---|
| 4 | Version 1 -- 1988-12-05 -- D.N. Lynx Crowe
|
---|
| 5 | =============================================================================
|
---|
| 6 | */
|
---|
| 7 |
|
---|
| 8 | #include "osbind.h"
|
---|
| 9 | #include "stddefs.h"
|
---|
| 10 |
|
---|
| 11 | char *days[] = {
|
---|
| 12 |
|
---|
| 13 | "Sunday",
|
---|
| 14 | "Monday",
|
---|
| 15 | "Tuesday",
|
---|
| 16 | "Wednesday",
|
---|
| 17 | "Thursday",
|
---|
| 18 | "Friday",
|
---|
| 19 | "Saturday"
|
---|
| 20 | };
|
---|
| 21 |
|
---|
| 22 | char *mons[] = {
|
---|
| 23 |
|
---|
| 24 | "January",
|
---|
| 25 | "February",
|
---|
| 26 | "March",
|
---|
| 27 | "April",
|
---|
| 28 | "May",
|
---|
| 29 | "June",
|
---|
| 30 | "July",
|
---|
| 31 | "August",
|
---|
| 32 | "September",
|
---|
| 33 | "October",
|
---|
| 34 | "November",
|
---|
| 35 | "December"
|
---|
| 36 | };
|
---|
| 37 |
|
---|
| 38 | /* |
---|
| 39 |
|
---|
| 40 | */
|
---|
| 41 |
|
---|
| 42 | /*
|
---|
| 43 | =============================================================================
|
---|
| 44 | wkday() -- determine the day of the week by Zeller's Congruence
|
---|
| 45 |
|
---|
| 46 | Uses the Gregorian calendar -- accurate from 1752 through 4901 A.D.
|
---|
| 47 |
|
---|
| 48 | short
|
---|
| 49 | wkday(year, month, day)
|
---|
| 50 | short year, month, day;
|
---|
| 51 |
|
---|
| 52 | year 1752..4901
|
---|
| 53 | month 1..12 1 = Jan., 2 = Feb., ..., 12 = Dec.
|
---|
| 54 | day 1..31
|
---|
| 55 |
|
---|
| 56 | Returns:
|
---|
| 57 |
|
---|
| 58 | 0 - Sunday
|
---|
| 59 | 1 - Monday
|
---|
| 60 | 2 - Tuesday
|
---|
| 61 | 3 - Wednesday
|
---|
| 62 | 4 - Thursday
|
---|
| 63 | 5 - Friday
|
---|
| 64 | 6 - Saturday
|
---|
| 65 | =============================================================================
|
---|
| 66 | */
|
---|
| 67 |
|
---|
| 68 | short
|
---|
| 69 | wkday(year, month, day)
|
---|
| 70 | register short year, month, day;
|
---|
| 71 | {
|
---|
| 72 | register short cen, yinc;
|
---|
| 73 |
|
---|
| 74 | month -= 2;
|
---|
| 75 |
|
---|
| 76 | if (month < 1) {
|
---|
| 77 |
|
---|
| 78 | month += 12;
|
---|
| 79 | --year;
|
---|
| 80 | }
|
---|
| 81 |
|
---|
| 82 | cen = year / 100;
|
---|
| 83 | yinc = year - (cen * 100);
|
---|
| 84 |
|
---|
| 85 | return(((((26 * month) - 2) / 10) + day + yinc + (yinc / 4)
|
---|
| 86 | + (cen / 4) - (2 * cen)) % 7);
|
---|
| 87 | }
|
---|
| 88 |
|
---|
| 89 | /* |
---|
| 90 |
|
---|
| 91 | */
|
---|
| 92 |
|
---|
| 93 | main()
|
---|
| 94 | {
|
---|
| 95 | register long t;
|
---|
| 96 | short yr, mn, dy, hh, mm, ss;
|
---|
| 97 |
|
---|
| 98 | t = Gettime();
|
---|
| 99 |
|
---|
| 100 | yr = ((short)(t >> 25) & 0x007F) + 1980;
|
---|
| 101 | mn = (short)(t >> 21) & 0x000F;
|
---|
| 102 | dy = (short)(t >> 16) & 0x001F;
|
---|
| 103 |
|
---|
| 104 | hh = (short)(t >> 11) & 0x001F;
|
---|
| 105 | mm = (short)(t >> 5) & 0x003F;
|
---|
| 106 | ss = ((short)t & 0x001F) << 1;
|
---|
| 107 |
|
---|
| 108 | printf("It is %02d:%02d:%02d on %s, %s %d, %d.\n",
|
---|
| 109 | hh, mm, ss,
|
---|
| 110 | days[wkday(yr, mn, dy)],
|
---|
| 111 | mons[mn - 1], dy, yr);
|
---|
| 112 |
|
---|
| 113 | exit(0);
|
---|
| 114 | }
|
---|