目标
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;
}