c语言计算两个日期的天数差的代码
时间: 2023-10-14 09:11:46 浏览: 244
C# 计算两个日期之间相差的天数
4星 · 用户满意度95%
以下是c语言计算两个日期的天数差的代码:
```c
#include <stdio.h>
struct Date {
int year;
int month;
int day;
};
int daysOfMonth(int year, int month) {
int days[] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
if (month == 2) {
if ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0) {
return 29;
} else {
return 28;
}
} else {
return days[month - 1];
}
}
int daysBetween(struct Date date1, struct Date date2) {
int days = 0;
if (date1.year == date2.year && date1.month == date2.month) {
days = date2.day - date1.day;
} else {
// 计算 date1 当月剩余天数
days += daysOfMonth(date1.year, date1.month) - date1.day;
// 计算 date1 后面几个月的天数
for (int i = date1.month + 1; i <= 12; i++) {
days += daysOfMonth(date1.year, i);
}
// 计算 date2 前面几个月的天数
for (int i = 1; i < date2.month; i++) {
days += daysOfMonth(date2.year, i);
}
// 计算 date2 当月已过天数
days += date2.day;
// 计算中间整年的天数
for (int i = date1.year + 1; i < date2.year; i++) {
if ((i % 4 == 0 && i % 100 != 0) || i % 400 == 0) {
days += 366;
} else {
days += 365;
}
}
// 如果是闰年 2 月 29 日,则减少一天
if ((date1.year % 4 == 0 && date1.year % 100 != 0) || date1.year % 400 == 0) {
if (date1.month <= 2 && date2.month > 2) {
days--;
}
}
}
return days;
}
int main() {
struct Date date1 = {2021, 1, 1};
struct Date date2 = {2021, 12, 31};
printf("Days between %d/%d/%d and %d/%d/%d: %d\n", date1.year, date1.month, date1.day, date2.year, date2.month, date2.day, daysBetween(date1, date2));
return 0;
}
```
以上是回答问题的代码,希望对您有所帮助。
阅读全文