给我一张闰年表

1个回答

  • 推导过程:

    1.平年365天(52周+1天),闰年366天(52周+2天).平年2月28天,闰年2月29天.

    由于公元1月1日设为星期六,故3月1日为星期三. ——注意这个“三”

    为使算法达到最简,故本算法以“星期”为计算单位.且选3月1日为基月.

    2.每400年整一闰,或每4年且不为百年的一闰.

    百年%4=0闰或(年%4=0并且年0)闰.

    3.每 4年(3个平年+1个闰年)共208周+5天 ——注意这个“5天”

    每百年共100*(208周+5天)-1天=5217周+5天 ——注意这个“5天”(整

    百年暂设为平年)

    每400年共4*(5217周+5天)+1天(整400年闰)=20871周+0天——注意这个“0天”和

    “1天”(4个整百年只有一个闰年)

    即400年一轮回!(原来万年历400年前是一家)

    4.万年3月1日星期算法(记住那个三)

    公式:某年3月1日星期几=(3天+百年%4*5天+年/4*5天+年%4+月星期表+日-1天)%7

    某年3月1日星期几=(百年%4*5天+年/4*5天+年%4+月星期表+日+2天)%7

    或 某年3月1日星期几=(百年%4*5天+年+年/4+月星期表+日+2天)%7

    闰4百年3月1日星期算法(百年%4=0)

    公式:某年3月1日星期几=(年+年/4+月星期表+日+2天)%7

    例:0000年3月1日星期几=(0+0/4+0+1+2)%7=3%7=星期三

    1600年3月1日星期几=(0+0/4+0+1+2)%7=3%7=星期三

    2000年3月1日星期几=(0+0/4+0+1+2)%7=3%7=星期三

    2001年3月1日星期几=(1+1/4+0+1+2)%7=4%7=星期四

    2004年3月1日星期几=(4+4/4+0+1+2)%7=8%7=星期一

    2008年3月1日星期几=(8+8/4+0+1+2)%7=13%7=星期六

    2042年3月1日星期几=(42+42/4+0+1+2)%7=55%7=星期六

    平4百年3月1日星期算法(百年%40)

    公式:某年3月1日星期几=(百年%4*5天+年+年/4+月星期表+日+2天)%7

    例:1700年3月1日星期几=(17%4*5+0+0/4+0+1+2)%7=8%7=星期一(注意:1700年是平

    年)

    1800年3月1日星期几=(18%4*5+0+0/4+0+1+2)%7=13%7=星期六(注意:1800年是平

    年)

    1900年3月1日星期几=(19%4*5+0+0/4+0+1+2)%7=18%7=星期四(注意:1900年是平

    年)

    1901年3月1日星期几=(19%4*5+1+1/3+0+1+2)%7=19%7=星期五

    1918年3月1日星期几=(19%4*5+18+18/4+0+1+2)%7=(15+22+3)%7=40%7=星期五

    1958年3月1日星期几=(19%4*5+58/4*5+58%4+3)%7=(15+70+2+3)%7=90%7=星期六

    1988年3月1日星期几=(19%4*5+88/4*5+88%4+3)%7=(15+110+0+3)%7=128%7=星期二

    1999年3月1日星期几=(19%4*5+99/4*5+99%4+3)%7=(15+120+3+3)%7=141%7=星期一

    2100年3月1日星期几=(21%4*5+0/4*5+0%4+3)%7=(5+0+0+3)%7=8%7=星期一(注意:

    2100年是平年)

    2101年3月1日星期几=(21%4*5+1/4*5+1%4+3)%7=(5+0+1+3)%7=9%7=星期二

    2102年3月1日星期几=(21%4*5+2/4*5+2%4+3)%7=(5+0+2+3)%7=10%7=星期三

    2103年3月1日星期几=(21%4*5+3/4*5+3%4+3)%7=(5+0+3+3)%7=11%7=星期四

    2104年3月1日星期几=(21%4*5+4/4*5+4%4+3)%7=(5+1+0+3)%7=9%7=星期二(注意:

    2104年是闰年)

    9999年3月1日星期几=(99%4*5+99/4*5+99%4+3)%7=(120+15+3+3)%7=141%7=星期一

    注:按400年一轮回!(400年前是一家)的说法

    1600年,2000年是一样的

    1700年,2100年是一样的

    1800年,2200年是一样的

    1900年,2300年是一样的

    所以,万年历实际上是骗人的,应该叫“四百年历”才是.万只是多的意思罢了.

    5. 万年某日星期算法

    公式:某日星期几=(百年%4*5天+年+年/4+月星期表+日+2天)%7

    通同星期偏差表

    闰年 1月 2月 3月 4月 5月 6月 7月 8月 9月 10月 11月 12月

    天数 31 29 31 30 31 30 31 31 30 31 30 31

    自己算一下