目标
1. 求解两个日期相差的天数。
2. 获取每个月的天数。
代码 1
该算法先根据年月日求出该日期距离 0001年1月1日 的总天数,然后两个天数直接相减,即可求出相差的天数。
先贴出来代码:
// 计算日期差
// 编译环境:VS2017,C++ 语言
//
#include <stdio.h>
// 计算从 0001-1-1 起的天数
int countdays(int y, int m, int d)
{
if (m < 3) y--, m += 12;
return 365 * y + (y >> 2) - y / 100 + y / 400 + (153 * m - 457) / 5 + d - 306;
}
int main()
{
// 输入目标日期
int year, month, day;
scanf_s("%d-%d-%d", &year, &month, &day);
// 输出当前日期与 1949-10-1 相差的天数
printf("%d\n", countdays(year, month, day) - countdays(1949, 10, 1));
return 0;
}

本文介绍了如何用C语言计算两个日期相差的天数,重点解析了一个算法,该算法巧妙地处理了闰年和不同月份天数的问题,通过位移运算提高效率,并给出具体代码示例。
最低0.47元/天 解锁文章
1万+

被折叠的 条评论
为什么被折叠?



