日历算法学习总结

您所在的位置:网站首页 农历和阳历算法公式 日历算法学习总结

日历算法学习总结

2024-07-11 15:05| 来源: 网络整理| 查看: 265

日历算法学习总结——公历

学习了日历算法,做些记录,方便以后复习。

1 历法:

公元1582年10月15日起使用格里历。

公元1582年10月4日之前到公元前45年1月1日使用儒略历。

公元前45年1月1日,历史学家、历法学者等都推荐使用儒略历法。因此计算公历时,1582年10月4日之前都使用儒略历。

历史上没有公元0年,也没有公元1582年10月5日~1582年10月14日这10天。即公元前1年(-1年)之后直接是公元1年(1年),公元1582年10月4日之后直接是公元1582年10月15日。

不管是格里历还是儒略历,1到12月份每月的天数是相同的: 平年:31、28、31、30、31、30、31、31、30、31、30、31; 闰年:31、29、31、30、31、30、31、31、30、31、30、31。 (注:儒略历在发布不久,在每月设置天数还是挺乱的,真实的并非是上面的天数。包括置闰年也是搞错一段时间。直到公元3年后才走上正轨。)

2 闰年计算:

2.1 格里历: (1)如果年份是4的倍数,且不是100的倍数,则是闰年; (2)如果年份是400的倍数,且不是3200的倍数,则是闰年; (3)如果年份是86400的倍数,则是闰年; (4)不满足(1)、(2)、(3)条件的就是平常年。

2.2 儒略历: 每4年置一闰年。 从公元1年开始算起:……-7年、-5年、-1年、4年、8年、12年、16年……即: (1)公元前年份(用负数表示)+1是4的倍数,则是闰年; (2)公元后年份是4的倍数,则是闰年; (3)不满足(1)、(2)条件的就是平常年。

2.3 闰年计算函数:

/*判断是否是闰年*/ bool IsLeapYear(int year) { if(year > 1582) /*格里历:能被4整除且不能被100整除;或者能被400整除且不能被3200整除;或者能被86400整除的年份是闰年。*/ return((year % 4 == 0) && (year % 100 != 0) || (year % 400 == 0) && (year % 3200 != 0) || (year % 86400 == 0)); else if((year > 0) && (year 0,所以 D=2c+y+[25c]+[y/4]-[c]-[y/100]+[c/4]+[y/400]-[c/32]-[y/3200]+[c/864]+[y/86400]+[13×(month+1)/5]+day-4

因为 0



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3