21xrx.com
2025-03-25 09:05:13 Tuesday
文章检索 我的文章 写文章
【教程】C语言计算两个日期相差天数
2023-06-15 13:36:37 深夜i     --     --
C语言 日期 相差天数 数组 闰年

  return (year % 4 == 0 && year % 100 != 0) || year % 400 == 0;

在开发中,我们可能需要计算某个事件或任务的时间长度,这时就需要计算两个日期之间相差的天数了。在C语言中实现这个功能也很简单,本文就为大家介绍一下如何用C语言求两个日期相差多少天。

首先我们需要知道每个月的天数是多少,这里我们可以借助一个数组来存储。然后通过输入两个日期,分别计算出两个日期对应年、月、日在这一年中所经过的天数,再用这两个天数做差就可以得出它们之间相差的天数了。

以下是具体实现过程的代码:

#include 
int days[13] = 31; // 存储每个月的天数
int isleap(int year) // 判断是否是闰年
{
  return (year % 4 == 0 && year % 100 != 0) || year % 400 == 0;
}
int getdays(int year, int month, int day) // 计算这个日期在这一年中所经过的天数
{
  int sum = 0;
  for (int i = 1; i < month; i++) // 先计算这个日期之前的整月天数
  {
    sum += days[i];
  }
  sum += day; // 再加上这个月的天数
  if (isleap(year) && month > 2) // 如果是闰年并且月份大于2月
  {
    sum++; // 需要加上2月多出来的一天
  }
  return sum;
}
int main()
{
  int year1, month1, day1;
  int year2, month2, day2;
  printf("请输入第一个日期(年-月-日):");
  scanf("%d-%d-%d", &year1, &month1, &day1);
  printf("请输入第二个日期(年-月-日):");
  scanf("%d-%d-%d", &year2, &month2, &day2);
  int days1 = getdays(year1, month1, day1); // 第一个日期所经过的天数
  int days2 = getdays(year2, month2, day2); // 第二个日期所经过的天数
  printf("两个日期相差%d天\n", abs(days2 - days1));
  return 0;
}

  
  

评论区