慢羊羊的空间

无为,无我,无欲,居下,清虚,自然

计算两个日期相差天数的最简洁的代码

目标

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, &am
...