網路城邦
上一篇 回創作列表 下一篇   字體:
行事曆檢核副程式
2020/11/14 11:25:08瀏覽345|回應1|推薦5

行事曆檢核副程式
 本文在提供一個計算當日在行事曆內是星期幾的副程式。
程式碼如下:
//***** 行事曆, 檢查當日的星期幾, 0代表星期日, 其他依序
//***** Mth[13]矩陣佈的數據, 第一個是年代表(未2位),次後依一月~十二月,所設定之數據是前一個月最後一天的星期數
//***** 只要呼叫本副程式,即依當下的 AC_yer,AC_mth,AC_day值,計算出本日的星期幾存於AC_wek中
void CHECK_year(void)
{ unsigned char i;
 unsigned char  Mth[13]={20,2,5,6,2,4,0,2,5,1,3,0,1};  //2020行事曆矩陣(本年度有閏日)
// unsigned char  Mth[13]={21,4,0,0,3,5,1,3,6,2,4,0,2};  //2021行事曆矩陣

 if((AC_mth==4 || AC_mth==6 || AC_mth==9 || AC_mth==11) && AC_day>=31) {AC_day=1;AC_mth++;goto C0;} //判斷當月只有30天的月份
 else { if(AC_mth==2 && AC_day>=29 && (AC_yer%4)!=0) {AC_day=1;AC_mth++;goto C0;}    //判斷當年2月只有28天的月份
 else { if(AC_mth==2 && AC_day>=30 && (AC_yer%4)==0) {AC_day=1;AC_mth++;goto C0;}    //判斷當年2月只有29天的月份
 else { if((AC_mth==1 || AC_mth==3 || AC_mth==5 || AC_mth==7 || AC_mth==8 || AC_mth==10 || AC_mth==12) && AC_day>=32)
   { AC_day=1;AC_mth++;goto C0;} 
     else { goto C1; }
   }
   } 
   }
 C0:
 if(AC_mth>=13)    // 每年需更新每個月的第一天是星期幾在矩陣變數 Mth[AC_mth] 
 { AC_yer++;AC_mth=1;
  Mth[0]=AC_yer;
  if((AC_yer-1)%4==0) Mth[1]=Mth[1]+2; //判斷去前一年一月是否為閏年
  else Mth[1]++;
  if(Mth[1]>7) { Mth[1]=Mth[1]%7; }
  if((AC_yer-1)%4==0) Mth[2]=Mth[2]+2; //判斷去前一年一月是否為閏年
  else Mth[2]++;
  if(Mth[2]>7) { Mth[2]=Mth[2]%7; }
  for(i=3;i<13;i++)
  { if((AC_yer%4)==0) Mth[i]=Mth[i]+2;  //判斷今年三月~12月是否為閏年
   else Mth[i]=Mth[i]+1;
   if(Mth[i]>7) { Mth[i]=Mth[i]%7; }
  }
 }
 C1: 
 AC_wek=(Mth[AC_mth]+AC_day)%7;  //計算本日屬於星期幾
 if(AC_wek==0) AC_wek=7; 
 return;
}

( 興趣嗜好電腦3C )
回應 推薦文章 列印 加入我的文摘
上一篇 回創作列表 下一篇

引用
引用網址:https://classic-blog.udn.com/article/trackback.jsp?uid=PYANG&aid=152980386

 回應文章

人神佛魔上帝各種萬年禍害沒必要再丟臉萬代
等級:8
留言加入好友
打擾了!!
2021/06/02 14:18
 
👍(💥超讚)手機傳那麼快
💖未來人類~不超幸福~也難👌😁\^^
 
▲📢👍全贏全勝(造福萬代)!!183. 
 
▲💖👍😎全人類「百億身價」、「NMN健康萬代」法案發展!!\^^ 
 
手機容量有限
傳完「重要消息」離開 貴社群。
 
👍自己人好的傳開👌😁\^^
 
👍壞的就沒辦法(再搞自己人)☝️😁\^^
 
▲🌈☕明天「造福萬代」、「百億身價」到處再戰讚…………👌🤗\^^ 
 
不利用假期、有空時間 
💖造福萬代、賺「百億身價」外快 
不然要忙什麼??☝️😁\^^