计算两个日期之间的天数,但结果是错误的



我做了一个程序来计算两个日期之间的天数不同,但它正在计算月份和天数,但只打印天数,例如,如果它的 2 个月和 25 天,它只打印 25 天,我希望它只以天计算,所以答案不会是 2 个月和 25 天, 但仅68天。

#include <stdio.h>
#include <stdlib.h>
#include <string.h> 
int main ( int argc, char *argv[] ) {
/* Names of the months */
char *monthName [12] = {"January", "February", "March", "April", "May", "June", "July", "August", 
"September", "October", "November", "December" };
/* The number of days in each month */
int monthLength[12] = { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };
int dd1 = 0;
int mm1 = 0; 
int yyyy1 = 0; 
int dd2 = 0; 
int mm2 = 0; 
int yyyy2 = 0; 
int day_diff;
if ( argc < 4 ) { 
printf ( "usage: ./daysCalculcatorA dd1 mm2 yyyy1 dd2 mm2 yyyy2 n" );
exit ( 1 );
} else { 
dd1 = atoi ( argv[1] );
mm1 = atoi ( argv[2] );
yyyy1 = atoi ( argv[3] );
dd2 = atoi ( argv[4] );
mm2 = atoi ( argv[5] );
yyyy2 = atoi ( argv[6] );
}
if ( dd2 < dd1)  { 
if(mm2 ==3) 
{
if ((yyyy2 % 4 == 0 && yyyy2 % 100 != 0) || (yyyy2 % 400 == 0))  {
dd2+=29;
}
else 
{ 
dd2+=28;
}
}
else if (mm2 ==5 || mm2 ==7 || mm2 ==10 || mm2 ==12)
{ 
dd2+=30;
}
else
{
dd2 +=31;
}
mm2 = mm2 -1;
}
if (mm2<mm1)
{
mm2 += 12;
yyyy2 -= 1;
}
day_diff = dd2 - dd1-1;
printf(" %d ", day_diff); 
return (0);
}

请参阅 mktime 示例如何创建 2 个结构 tm对象,然后您可以轻松比较它们。

相关内容

最新更新