• KY111 日期差值


    KY111 日期差值
    在这里插入图片描述

    //分别求出每一个日期与0000年0月1日距离的天数
    //两个距离天数相减即可得到两个日期相差的天数
    int mon[12] = { 0,31,59,90,120,151,181,212,243,273,304,334 };
    int CountDay(int y, int m, int d)
    {
    	//x-y-z:算出x年之前有多少天 算出y月之前有多少天
    	//格里高利历(Gregorian Calendar)中的闰年规则
    	int yearDay = y * 365 + y / 4 - y / 100 + y / 400;
    
    	int monthDay = mon[m - 1];
    
    	//如果样例的月份是3往后的月份需要考虑该年是平年闰年的影响
    	if (m > 2 && ((y % 4 == 0 && y % 100 != 0) || y % 400 == 0))
    		monthDay += 1;
    
    	return yearDay + monthDay + d;
    }
    int main()
    {
    	int year1, month1, day1;
    	scanf("%4d%2d%2d", &year1, &month1, &day1);
    	int n1 = CountDay(year1, month1, day1);
    
    	int year2, month2, day2;
    	scanf("%4d%2d%2d", &year2, &month2, &day2);
    	int n2 = CountDay(year2, month2, day2);
    	//如果两个日期是连续的我们规定他们之间的天数为两天
    	cout << abs(n1 - n2) + 1 << endl;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29

    代码可以计算出给定年份之前的总天数,其中的计算公式是根据格里高利历(Gregorian Calendar)中的闰年规则所得出的。

    具体解释如下:

    y * 365:先将给定年份乘以365,表示每一年都有365天。
    y / 4:然后将给定年份除以4,表示在这些年份中有多少个闰年。因为每4年会有一个闰年,所以将年份除以4得出的整数部分就代表了闰年的个数。而每个闰年会额外增加一天,所以将闰年的天数加上去。
    y / 100:接下来将给定年份除以100,表示在这些年份中有多少个世纪闰年。因为每100年会有一个世纪闰年,即不能被400整除的年份不是闰年。所以将年份除以100得出的整数部分就代表了世纪闰年的个数。但是这些世纪闰年多计算了一天,在计算总天数时需要减去这些多计算的天数。
    y / 400:最后将给定年份除以400,表示在这些年份中有多少个400年闰年。因为每400年会有一个400年闰年,即能被400整除的年份是闰年。所以将年份除以400得出的整数部分就代表了400年闰年的个数。但是这些400年闰年多计算了一天,在计算总天数时需要减去这些多计算的天数。
    综上所述,将以上四个部分计算得出的值相加即可得到给定年份之前的总天数。这段代码利用了则和世纪闰年规则来精确计算每一年的天数,从而得到累计的总天数。

  • 相关阅读:
    【大数据之Hadoop】三十七、Hadoop HA高可用
    深度学习_10_softmax_实战
    夜莺n9ev5配置grafana9.1.1
    一文搞懂cookie与session
    微信小程序使用echarts
    Java项目:SSH学生学籍管理系统及教务管理系统
    Centos7实操练习题
    Pycharm-community-2021版安装和配置
    自己的类支持基于范围的for循环 (深入探索)
    使用VBA实现快速模糊查询数据
  • 原文地址:https://blog.csdn.net/LHRan_ran_/article/details/133815337