繁体   English   中英

使用当前时间获取时差

[英]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) ;

然后,让该功能打印所需的内容。

  1. int second;个变量添加int second; int minute;
  2. 添加计算second = (int) diff % 60; minute = (int) diff % 3600 / 60;minute = (int) diff % 3600 / 60;
  3. 让它打印结果
    printf("The elapsed time is %d Hours - %d Minutes - %d Seconds.\\n", hour, minute, second);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM