以C计算时差(天,小时,分钟,秒)

时间:2017-08-21 08:04:51

标签: c time date-arithmetic

我试图计算天/小时/分钟/秒之间的时差,但结果并不好。 我试着降低它们,然后在几秒钟内转动它们,然后我把它们带回到相同的格式(D / H / M / S)。 我的目标是计算两次之间的时间。喜欢: 1天,2小时,3分钟和54秒 3天,3小时,10分钟和23秒。 这是我尝试过的:

#include <stdio.h>
#include <stdlib.h>

int main()
{
     int day1, hour1, min1, sec1, day2, hour2, min2, sec2, totalTime;
    printf("Enter input:");
     scanf("%d%d%d%d%d%d%d%d", &day1, &hour1, &min1, &sec1, &day2, &hour2, &min2, &sec2);
     totalTime = (day2-day1)*86400 + (hour2-hour1)*3600 + (min2-min1)*60 + (sec2-sec1);

     printf("D: %d\n", totalTime / 86400);
     totalTime = totalTime % 86400;

     printf("H: %d\n", totalTime / 3600);
     totalTime = totalTime & 3600;

     printf("M: %d\n", totalTime / 60);
     totalTime = totalTime % 60;

     printf("S: %d\n", totalTime);

    return 0;
}

但不要像我预期的那样工作。

1 个答案:

答案 0 :(得分:0)

鉴于这是计算时差的一种不好的方法,有两个问题:

  1. scanf无法分隔整数
  2. 小时差异错误
  3. 试试这个:

    #include <stdio.h>
    #include <stdlib.h>
    
    int main()
    {
        int day1, hour1, min1, sec1, day2, hour2, min2, sec2, totalTime;
        printf("Enter input:");
        scanf("%d,%d,%d,%d,%d,%d,%d,%d", &day1, &hour1, &min1, &sec1, &day2, &hour2, &min2, &sec2);
        totalTime = (day2 - day1) * 86400 + (hour2 - hour1) * 3600 + (min2 - min1) * 60 + (sec2 - sec1);
    
        printf("D: %d\n", totalTime / 86400);
        totalTime = totalTime % 86400;
    
        printf("H: %d\n", totalTime / 3600);
        totalTime = totalTime % 3600;
    
        printf("M: %d\n", totalTime / 60);
        totalTime = totalTime % 60;
    
        printf("S: %d\n", totalTime);
    
        return 0;
    }
    

    计算时差的更好方法可以是使用difftime函数