当前位置: 代码迷 >> 综合 >> 万年阳历中星期的软件算法2000 ———2099
  详细解决方案

万年阳历中星期的软件算法2000 ———2099

热度:41   发布时间:2023-12-07 23:43:12.0
说明]
本法具有占用 ROM 小,运算速快的特点,范围 2000 2099 100 年;
只要输入年月日便可直接得出相应的星期,一步到位!
算法]
1. 0 à 6 表示星期天到星期六 .
2. 平年有 365 , 闰年有 366 . 而一星期 7 天, 365 mod 7=1,365 mod 7=2, 那么, N 年与( N+1 )分别相差 +1 + 1+1 )天。
3. 已知 :2000.01.01 是星期六 .
4. 作一张数据表 : 要求这年 1 1 日是星期六且是非闰年 ( 平年 选用 2005 年正好 ) 给出每月的 1 日星期数 :
DB 0FFH, 06H, 02H, 02H, 05H, 00H, 03H, 05H, 01H, 04H, 06H, 02H, 04H; (first data is useless)
5 .比如求 Y1Y0 M D 日的星期 .
6 .那么根据 M 可查得相对的 M 1 日的星期数,为 X .
7 .所以 M D 日为星期 (X+(D-1))MOD 7 .
8。 由于从 2000 M D 日到 Y1Y0 M D 日所经历的闰二月数共为 : (Y1Y0-2000+3)/4+(Y1Y0-2000)+ Y1Y0年是闰年且M>2 .
所以整个公式为 : 这天是
星期 [(X+(D-1))+ (Y1Y0-2000+3)/4+(Y1Y0-2000)+Y1Y0 年是闰年且 M >2] MOD 7
 
  相关解决方案