[英]Get time difference using current time
我为我的孩子(8岁)制作了一个数学游戏,在某个时候,我决定向他展示他需要多少时间来回答这个问题,所以我决定在这里使用函数时间。
我编写了以下程序:
#include <time.h>
#include <stdlib.h>
#include <unistd.h>
#include <stdio.h>
struct setClock{
int hour;
int minutes;
int seconds;
};
struct setClock currTime(void);
void timeCheck(struct setClock myClock[2]);
int main(void){
struct setClock myClock[2];
myClock[0] = currTime();
printf("Start Time: %d:%d:%d\n\n", myClock[0].hour, myClock[0].minutes, myClock[0].seconds );
sleep(5);
myClock[1] = currTime();
printf("End Time: %d:%d:%d\n", myClock[1].hour, myClock[1].minutes, myClock[1].seconds );
timeCheck(myClock);
return 0;
}
struct setClock currTime(void){
struct setClock ret;
struct tm *tm;
time_t myTime;
myTime=time(NULL);
tm=localtime(&myTime);
ret.hour = tm->tm_hour;
ret.minutes = tm->tm_min;
ret.seconds = tm->tm_sec;
return ret;
}
void timeCheck(struct setClock myClock[2]){
int hour;
int minute;
time_t end, start;
double diff;
start = (time_t)((myClock[0].hour * 60 + myClock[1].hour) * 60) ;
end = (time_t)((myClock[0].minutes * 60 + myClock[1].minutes) * 60) ;
if( end < start ){
end += 24 * 60 * 60 ;
}
diff = difftime(end, start);
hour = (int) diff / 3600;
minute = (int) diff % 3600 / 60;
printf("\n\n");
printf("The elapsed time is %d Hours - %d Minutes\n", hour, minute);
}
当我运行它时,我得到不同的输出,例如:
Start Time: 16:19:2
End Time: 16:19:7
The elapsed time is 3 Hours - 3 Minutes
要么:
Start Time: 16:19:14
End Time: 16:19:19
The elapsed time is 1 Hours - 1 Minutes
但是输出应该是:
The elapsed time is 0 Hours - 0 Minutes
我真的不知道我的timeCheck
函数出了什么问题。 无论如何,如果我对其进行了一些修复,我需要如何扩展以进行打印:
The elapsed time is 0 Hours - 0 Minutes - 5 Seconds.
start = (time_t)((myClock[0].hour * 60 + myClock[1].hour) * 60) ;
end = (time_t)((myClock[0].minutes * 60 + myClock[1].minutes) * 60) ;
此代码似乎是胡说八道。 我认为这应该是
start = (time_t)((myClock[0].hour * 60 + myClock[0].minutes) * 60 + myClock[0].seconds) ;
end = (time_t)((myClock[1].hour * 60 + myClock[1].minutes) * 60 + myClock[1].seconds) ;
然后,让该功能打印所需的内容。
int second;
个变量添加int second;
int minute;
second = (int) diff % 60;
minute = (int) diff % 3600 / 60;
后minute = (int) diff % 3600 / 60;
printf("The elapsed time is %d Hours - %d Minutes - %d Seconds.\\n", hour, minute, second);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.