C代码计算设置的年月日到当前年月日的天数
时间: 2024-10-13 14:19:13 浏览: 20
在C语言中,计算两个日期之间的天数可以使用`mktime()`函数配合`difftime()`函数。首先,你需要将输入的年、月、日转换成结构体`tm`表示的时间,然后使用`difftime()`获取两个时间点的差值(以秒为单位),最后除以一天的秒数得到天数。以下是一个简单的示例:
```c
#include <stdio.h>
#include <time.h>
int days_between_dates(int year1, int month1, int day1, int year2, int month2, int day2) {
struct tm date1 = {0};
struct tm date2 = {0};
// 设置日期1
date1.tm_year = year1 - 1900; // 时间库以1900为起点
date1.tm_mon = month1 - 1; // 注意月份从0开始计数
date1.tm_mday = day1;
// 设置日期2
date2.tm_year = year2 - 1900;
date2.tm_mon = month2 - 1;
date2.tm_mday = day2;
// 计算两个时间戳
time_t t1 = mktime(&date1);
time_t t2 = mktime(&date2);
// 如果t2小于t1,则交换它们以保证date2在date1之后
if (t2 < t1) {
time_t temp = t1;
t1 = t2;
t2 = temp;
}
// 获取天数差
double diff_seconds = difftime(t2, t1);
return static_cast<int>(diff_seconds / (60 * 60 * 24));
}
int main() {
int year1, month1, day1, year2, month2, day2;
// 输入两个日期...
int days = days_between_dates(year1, month1, day1, year2, month2, day2);
printf("The number of days between the two dates is: %d\n", days);
return 0;
}
```
阅读全文