用C++语言计算两个日期之间的天数,不要用时间库函数
时间: 2023-06-19 15:08:45 浏览: 135
计算两个日期之间的天数可以按照以下思路:
1. 定义一个结构体表示日期,包括年、月、日三个成员变量。
2. 定义一个函数,输入两个日期,返回它们之间的天数。
3. 在函数中先判断两个日期的大小,确保第一个日期小于等于第二个日期。
4. 然后计算两个日期之间的年份差、月份差和天数差。
5. 最后将所有的天数累加起来,即为两个日期之间的天数。
下面是示例代码:
```c++
#include <iostream>
using namespace std;
// 定义日期结构体
struct Date {
int year;
int month;
int day;
};
// 判断某一年是否为闰年
bool isLeapYear(int year) {
return (year % 4 == 0 && year % 100 != 0) || year % 400 == 0;
}
// 计算两个日期之间的天数
int getDaysBetweenDates(Date date1, Date date2) {
// 确保date1小于等于date2
if (date1.year > date2.year ||
(date1.year == date2.year && (date1.month > date2.month ||
(date1.month == date2.month && date1.day > date2.day)))) {
swap(date1, date2);
}
int days = 0;
// 计算两个日期之间的年份差
for (int i = date1.year; i < date2.year; ++i) {
days += isLeapYear(i) ? 366 : 365;
}
// 计算两个日期之间的月份差
int daysInMonth[] = {0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
for (int i = date1.month; i <= 12; ++i) {
days += daysInMonth[i] - date1.day;
if (i == 2 && isLeapYear(date1.year)) {
days += 1;
}
}
for (int i = 1; i < date2.month; ++i) {
days += daysInMonth[i];
if (i == 2 && isLeapYear(date2.year)) {
days += 1;
}
}
// 计算两个日期之间的天数差
days += date2.day - date1.day;
return days;
}
int main() {
Date date1 = {2021, 1, 1};
Date date2 = {2021, 2, 20};
cout << getDaysBetweenDates(date1, date2) << endl; // 输出 50
return 0;
}
```