计算两个日期相差的天数 如果相差天数是负数也输出
时间: 2023-08-29 08:08:35 浏览: 230
计算两个日期相差的天数
计算两个日期相差的天数,可以按照以下步骤进行:
1. 输入两个日期,例如 date1 和 date2。
2. 将输入的日期转换为时间戳。可以使用 time.h 中的 mktime 函数来实现。
3. 将时间戳作差,得到两个日期之间的秒数,并将其转换为天数。
4. 如果相差的天数是负数,输出负号即可。
下面是一个可以计算相差天数的 C 语言程序:
```
#include <stdio.h>
#include <time.h>
int main()
{
struct tm date1 = {0}; // 第一个日期
struct tm date2 = {0}; // 第二个日期
time_t time1, time2; // 日期的时间戳
double seconds; // 相差的秒数
int days; // 相差的天数
// 读入第一个日期
printf("请输入第一个日期(年 月 日):");
scanf("%d %d %d", &date1.tm_year, &date1.tm_mon, &date1.tm_mday);
date1.tm_year -= 1900; // 转换为从1900年开始计数
date1.tm_mon -= 1; // 转换为从0开始计数
// 读入第二个日期
printf("请输入第二个日期(年 月 日):");
scanf("%d %d %d", &date2.tm_year, &date2.tm_mon, &date2.tm_mday);
date2.tm_year -= 1900; // 转换为从1900年开始计数
date2.tm_mon -= 1; // 转换为从0开始计数
// 计算相差的秒数
time1 = mktime(&date1);
time2 = mktime(&date2);
seconds = difftime(time2, time1);
// 转换为相差的天数
days = (int)(seconds / 86400);
// 输出结果,如果相差的天数是负数,输出负号即可
if (days >= 0) {
printf("两个日期之间相差 %d 天\n", days);
} else {
printf("两个日期之间相差 -%d 天\n", -days);
}
return 0;
}
```
注意,上述代码中的 mktime 函数需要传入一个 struct tm 类型的指针,表示要转换的日期。同时,需要将年份减去 1900,将月份减去 1,才能正确地转换为时间戳。
阅读全文