我做了一个程序来计算两个日期之间的天数不同,但它正在计算月份和天数,但只打印天数,例如,如果它的 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对象,然后您可以轻松比较它们。