找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

搜索
查看: 1540|回復(fù): 4
收起左側(cè)

這段單片機(jī)日歷計(jì)算的C語(yǔ)言代碼如何理解?

[復(fù)制鏈接]
ID:1020164 發(fā)表于 2022-5-24 00:35 | 顯示全部樓層 |閱讀模式
u8 const table_week[12]={0,3,3,6,1,4,6,2,5,0,3,5}; //月修正數(shù)據(jù)表   
char SRTC_Get_Week(u16 year,u8 month,u8 day)   //計(jì)算星期幾
{  
u16 temp2;
  u8 yearH,yearL;
  
  yearH=year/100; yearL=year%100;
  if (yearH>19)yearL+=100;  
  temp2=yearL+yearL/4;
  temp2=temp2%7;
  temp2=temp2+day+table_week[month-1];
  if (yearL%4==0&&month<3)temp2--;
  if(temp2%7==0) return 7;
  return(temp2%7);
}  
這是日歷計(jì)算代碼。請(qǐng)問(wèn)標(biāo)紅代碼什么意思,請(qǐng)?jiān)斀?img src="static/image/smiley/default/em20.gif" smilieid="20" border="0" alt="" />

回復(fù)

使用道具 舉報(bào)

ID:213173 發(fā)表于 2022-5-24 06:23 | 顯示全部樓層
1.公歷閏年判定遵循的規(guī)律為:四年一閏、百年不閏、400年再閏。
2.公歷閏年的精確計(jì)算方法:普通年能被四整除且不能被100整除的為閏年。
3.世紀(jì)年能被400整除的是閏年,如2000年是閏年,1900年不是閏年。對(duì)于數(shù)值很大的年份,如果這年能整除3200并且能整除172800則是閏年。
yearH,yearL;是把年份分解為>=100和<100,以方便用char型數(shù)據(jù)計(jì)算。月分大小平潤(rùn)。周就不必細(xì)說(shuō)了吧。
回復(fù)

使用道具 舉報(bào)

ID:161164 發(fā)表于 2022-5-24 07:33 來(lái)自觸屏版 | 顯示全部樓層
請(qǐng)百度"星期的計(jì)算"
回復(fù)

使用道具 舉報(bào)

ID:505848 發(fā)表于 2022-5-24 08:38 | 顯示全部樓層
yearH=year/100; yearL=year%100;//取年份的后兩位,用于后續(xù)區(qū)分平閏年
  if (yearH>19)yearL+=100;            //2000年之后,統(tǒng)一加上100
  temp2=yearL+yearL/4;                 //平年,每年剩一天,每四年一個(gè)閏年,多剩一天
  temp2=temp2%7;                        //對(duì)7取余,夠7天填補(bǔ)一周
  temp2=temp2+day+table_week[month-1]; //多余的天+日期+月份的修正(一月說(shuō)明不需要修正,二月需要修正一月31天%7后,剩下的3天)
  if (yearL%4==0&&month<3)temp2--; //補(bǔ)償yearL+yearL/4中,由于正好能被4整除,多+的1天
  if(temp2%7==0) return 7;  //正好出現(xiàn)能被7整除時(shí),返回星期日
  return(temp2%7);   //根據(jù)多余的天數(shù),返回計(jì)算的星期

評(píng)分

參與人數(shù) 1黑幣 +40 收起 理由
admin + 40 回帖助人的獎(jiǎng)勵(lì)!

查看全部評(píng)分

回復(fù)

使用道具 舉報(bào)

ID:844772 發(fā)表于 2022-5-24 08:39 | 顯示全部樓層
你查查用于計(jì)算星期的泰勒公式就明白了,大概是這個(gè)樣子:w=y+[y/4]+[c/4]-2c+[26(m+1)/10]+d-1

評(píng)分

參與人數(shù) 1黑幣 +20 收起 理由
admin + 20 回帖助人的獎(jiǎng)勵(lì)!

查看全部評(píng)分

回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表