当前位置: 网站首页 > 技术应用 > 单片机应用 > 应用范例

单片机年月日算星期精简算法

#include
unsigned char getweek(unsigned char,unsigned char,unsigned char);
 
 
unsigned char getweek(unsigned char year,unsigned char month,unsigned char day)
{
        unsigned char week,tp;     
        tp=0;week=5;                //初始化2000-01-01星期六
        while(tp!=year){            //处理年(2000开始)
                week++;              //是上一年的星期的下一天 公式:365%7=1
                if(tp%4==0)week++;   //判断是否是閏年,閏年2月是29天 公式:366%7=2
                        tp++;                //下一年的1月1日
        }
        tp=1;
        while(tp!=month){                           //处理月(1月开始)
                switch(tp){
                        case 1:case 3:case 5:case 7:case 8:case 10:case 12: week=week+3;break;  //大月天数31%7
                        case 2: if(year%4==0)week++;break;           //閏月天数,閏年2月是29天 公式:366%7=2 29%7
                        case 4:case 6:case 9:case 11: week=week+2;break;                         //小月天数30%7
                }
                tp++;                                              //处理月
        }
        week=week+day;  //处理日(從1日开始)
        week=week%7;
        if(week==0) week=7;
        return week;        //返回星期
}
 
提取码: m3mn 
点击次数:  【关闭
  • 壹零零单片机©版权所有 2008-2025 粤ICP备17151077号

Powered by  xinfuke  5.2.5 ©2008-2025  www.100mcu.com