计算 C 中的时差(天、小时、分钟、秒)
Calculating time difference in C (days, hours, minutes, seconds)
我尝试计算天/小时/分钟/秒之间的时差,但结果并不理想。
我试着降低它们然后在几秒钟内转动它们,然后我将它们恢复到相同的格式 (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;
}
但是没有像我预期的那样工作。
鉴于这种计算时差的方法很差,存在两个问题:
- scanf 不能分隔整数
- 时差错误
试试这个:
#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 函数
我尝试计算天/小时/分钟/秒之间的时差,但结果并不理想。 我试着降低它们然后在几秒钟内转动它们,然后我将它们恢复到相同的格式 (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;
}
但是没有像我预期的那样工作。
鉴于这种计算时差的方法很差,存在两个问题:
- scanf 不能分隔整数
- 时差错误
试试这个:
#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 函数