home *** CD-ROM | disk | FTP | other *** search
- /*----------------------------------------------------------------------
- *+
- * Compute_Day
- * Compute Day of Week
- *
- * Usage
- *
- * int
- * Compute_Day(date, month, year)
- * int date ;
- * int month ;
- * int year ;
- *
- * Parameters
- *
- * date Date of Month (1 - 31)
- * month Month of Year (1 - 12)
- * year Year (e.g., 1989)
- *
- * Description
- *
- * Compute_Day() computes the day of the week for the given date
- * using the Zeller Congruence. It returns a positive value from
- * 0 to 6 for the day of the week
- *
- * Notes
- *
- * The Zeller Congruence maps Saturday as day 0. Most applications
- * treat Sunday as day 0. The parameter ZELLER_OFFSET is used to
- * convert the day of the week from Zeller to local.
- *
- *-
- */
-
- int
- Compute_Day(date, month, year)
- int date ;
- int month ;
- int year ;
-
- {
- int day ;
- int yr ;
- int mn ;
- int n1 ;
- int n2 ;
-
- /* Offset from Zeller to local */
- /* --------------------------- */
- #define ZELLER_OFFSET -1
-
- yr = year ;
- mn = month ;
-
- /* January or February? */
- /* -------------------- */
- if (mn < 3)
- {
- /* Yes, make these part of last year */
- /* --------------------------------- */
- mn += 12 ;
- yr -= 1 ;
- }
-
- n1 = (26 * (mn + 1)) / 10 ;
- n2 = (int) ((125 * (long) yr) / 100) ;
-
- day = ((date + n1 + n2 - (yr / 100) + (yr / 400) + ZELLER_OFFSET) % 7) ;
- return day ;
- }
-