|
计算星期几的C代码
计算星期几的C代码
- static UCHAR ClkDay; /* Counters for local
- DATE */
- static UCHAR ClkDOW; /* Day of week (0 is
- Sunday) */
- static UCHAR ClkMonth;
- static UINT ClkYear;
-
-
-
- typedef struct clk_month
- {
- UCHAR MonthDays; /* Number of days in each
- month */
- char *MonthName; /* Name of the
- month */
- UCHAR MonthVal; /* Value used to compute day of the
- week */
- } CLK_MONTH;
-
-
- static CLK_MONTH code ClkMonthTbl[] = { /* MONTHS
- TABLE */
- {0, "", 0}, /* Invalid
- month */
- {31, "January ", 6}, /*
- January */
- {28, "February ", 2}, /* February (note leap years are handled
- by code) */
- {31, "March ", 2}, /*
- March */
- {30, "April ", 5}, /*
- April */
- {31, "May ", 0}, /*
- May */
- {30, "June ", 3}, /*
- June */
- {31, "July ", 5}, /*
- July */
- {31, "August ", 1}, /*
- August */
- {30, "September ", 4}, /*
- September */
- {31, "October ", 6}, /*
- October */
- {30, "November ", 2}, /*
- November */
- {31, "December ", 4} /*
- December */
- };
-
-
-
-
- /*
- ********************************************************************************
- *************************
- * COMPUTE DAY-OF-WEEK
- *
- * Description : This function computes the day of the week (0 == Sunday) based
- on the current month,
- * day and year.
- * Arguments : None.
- * Returns : None.
- * Notes : - This function updates ClkDOW.
- * - This function is called by ClkUpdateDate().
- ********************************************************************************
- *************************
- */
- #if CLK_DATE_EN
- static void ClkUpdateDOW (void)
- {
- UINT dow;
-
- dow = ClkDay + ClkMonthTbl[ClkMonth].MonthVal;
- if (ClkMonth < 3)
- {
- if (ClkIsLeapYear(ClkYear))
- {
- dow--;
- }
- }
- dow += ClkYear + (ClkYear / 4);
- dow += (ClkYear / 400) - (ClkYear / 100);
- dow %= 7;
- ClkDOW = dow;
- }
- #endif
复制代码
|
|