C++之日期的计算

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/Richard__Ting/article/details/79465670

日期的计算很重要!

一、关于闰年

闰年是一类比较特殊的年份,闰年比平年(非闰年)在2月份多一天。下面是关于闰年的判断。

1. 年份非整百且能被4整除的年是闰年。(例如2004是闰年)

2. 年份能被400整除的年是闰年。(例如2000年是闰年,1800年不是闰年)

注意,能被100整除的年份,必须要被400整除才是闰年。

int is_leap_year(int year) {
    if (year % 400 == 0 || (year % 100 != 0 && year % 4 == 0)) {
        return 1;
    }
    return 0;
}

二、关于星期

例如公元1年1月1日是星期一。然后一天一天模拟,算出日期是星期几。这种方法容易理解,但是实现起来代码很长。除此以外,有一个公式可以快速地根据日期计算这一天是星期几,这被称为是蔡基姆拉尔森计算公式

假设星期位 w ,年份位 y ,月份为 m ,日期为 d。

w = (d + 2*m + 3*(m+1)/5 + y +y/4 - y/100 + y/400)% 7

然后把计算出来的 w 加上 1 就是真正的星期几了。

注意每年的1,2月要当成上一年的13,14月来计算,上述的除法均为整除。

展开阅读全文

没有更多推荐了,返回首页