組み込み技術を向上したい!!

でも組み込み以外にも手を出し始めました・・・

曜日計算アルゴリズム(C言語) うるう年に注意!!

今までに何度か曜日を算出する機会があったので、覚書を書いとこうと思いました。下に書いた関数の引数は文字通りyearは年、 monthは月、 dayは日です。

戻り値は算出された曜日に対応する数字です。0なら日曜、1なら月曜...。

ちゃんと実在する日付じゃないとダメだから、うるう年とか気をつけてね!

 

うるう年の判定方法をに簡単に説明します。

以下の項目をチェックすればOKです。

・西暦が4で割り切れる年は基本的にはうるう年

・西暦が100で割り切れる年は基本的にはうるう年ではないが、西暦が100でも400で割り切れる年はうるう年

 

uint8_t RTC_CalucuDow(uint32_t year, uint8_t month, uint8_t day)
{
	uint8_t rc;
	
	if(month == 1 || month == 2 ){
    		year--;
    		month += 12;
  	}
  	rc = (year + (year/4) - (year/100) 
  	   + (year/400) + (((13*month)+8)/5) + day ) % 7;
	
	return (rc);

}

数字でみると一年は365日で約52週間・・・。あっというまですね。

思いっきり突き進みましょう!!