算某年某月某日是星期几? 要算公元后的某一天是星期几,首先要知道历史上第一个星期日是哪一天。 去看看历史,公元0001年12月25日是耶稣诞生日,这一天是真正的礼拜天。 当前星期?=以耶稣生日做基数和当前距离**开始的日期的差值%7
unsigned char calculate_week(unsigned int year, unsigned char moon,unsigned char day) { unsigned char month_table[13]={0,31,28,31,30,31,30,31,31,30,31,30,31}; //平年月表 unsigned long Jesus; //耶稣生日距离**年开始的天数 unsigned long current_day_history; //当前日期距离**年开始的天数 unsigned int this_year; // unsigned char i; //遍历变量 for(i=0,Jesus=0;i<12,i++){ Jesu+=month_table; //计算耶稣生日距离**年开始的天数 } if(((year%4==0)&&(year%100))||(year%400==0)){ month_table[2]=29; ////本年是闰年, 修改闰年二月份天数 } for(i=0,this_year=0;i<moon,i++){ this_year+=month_table; // } this_year=this_year+day; //是今年的第xxx天 current_day_history=(unsigned long)((year-1)*365+(year-1)/4-(year-1)/100+(year-1)/400+this_year)) if(current_day_history<Jesus){ current_day_history=Jesus-current_day_history; //是在耶稣生日前的话 return (7-current_day_counter%7); //是在耶稣生日前的话 }else{ current_day_history=current_day_history-Jesus; //是耶稣生日之后 return(current_day_counter%7); } }
|