• 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年闰年多计算了一天,在计算总天数时需要减去这些多计算的天数。
    综上所述,将以上四个部分计算得出的值相加即可得到给定年份之前的总天数。这段代码利用了则和世纪闰年规则来精确计算每一年的天数,从而得到累计的总天数。

  • 相关阅读:
    React18入门(第二篇)——React18+Ts项目配置husky、eslint、pretttier、commitLint
    【数据结构与算法系列3】有序数组的平方 (C++ & Python)
    三维目标检测之ROS可视化
    持NPDP和PMP证书,可以享受深圳、北京等多项福利!
    (02)Cartographer源码无死角解析-(02) ROS基础讲解→
    数组扁平化的方法
    提升预算管控精度,助力保险资管协会财务管理数字化转型
    node.js+mysql+vue.js+vuex+echarts+elementui全栈后台管理系统
    多个电商平台API接口聚合解析,实现根据关键词取商品列表
    webpack5零基础入门-10babel的使用
  • 原文地址:https://blog.csdn.net/LHRan_ran_/article/details/133815337