您当前的位置: 首页 > 

仙剑情缘

暂无认证

  • 4浏览

    0关注

    333博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

2000~2099年星期计算方法

仙剑情缘 发布时间:2018-03-31 12:58:15 ,浏览量:4

时间日历结构体

typedef struct tagClock

{ UINT8 minute;        //分钟 UINT8 hour;        //    小时 UINT8 day;            //天 UINT8 month;    //月 UINT8 year;   //年 UINT8 week;    //星期 UINT8 dst_flag;        //ST,DST标志 UINT8 second; //秒

}CLOCK;

//   星期修正表        static const UINT8  WEEKDAY_KEYNO[15] = {          // all add 7-2 ,to prevent 2000-1-1 calc week result is error 0, // 0, /* dummy*/ 6, // 1, /* January */ 9, // 4, /* February */ 9, // 4, /* March */ 5, // 0, /* April */ 7, // 2, /* May */ 10, // 5, /* June */ 5, // 0, /* July */ 8, // 3, /* August */ 11, // 6, /* September */ 6, // 1, /* October */ 9, // 4, /* November */ 11, // 6, /* December */ 5, // 0, /* leap January */ 8 // 3, /* leap February */}; /********************************************************************************************************** Routine Name: cal_weekday Form: void cal_weekday(CLOCK* self) Parameters: CLOCK* self self----point to  CLOCK  struct  first address Return Value: void Description: calc week ------calc range is 00yr- 1-1 ~ 99 yr 12-31,2000年基数被省略***********************************************************************************************************/ void cal_weekday(CLOCK* self){ CLOCK *ptr = self; UINT8 rm_week_i; rm_week_i= WEEKDAY_KEYNO[ptr->month];  //查星期修正表 if((ptr->monthyear & 0x03)==0))  //润年的1,2月处理 { rm_week_i--; } // so modify it to (last 2 yr digit + 1/4(last 2 yr digit) + days + keyno ) mod 7 // the remainder is the result: 0=sunday, 1=monday, 2=Tue .... ptr->week=((rm_week_i  + ptr->day+ ptr->year+(ptr->year>>2))%7); }

关注
打赏
1658017818
查看更多评论
立即登录/注册

微信扫码登录

0.0429s