【问题标题】:Difference in seconds between two dates in C [closed]C中两个日期之间的秒差[关闭]
【发布时间】:2017-07-05 05:33:39
【问题描述】:

我想计算两个日期之间的秒差,但结果为 0。

代码如下:

time_t=time(NULL);
struct tm * timeNow=localtime();
time_t start=mktime(&*timeNow);
time_t end=mktime(&*recordFind->timeInserted);

double seconds=difftime(start,end);

recordFind->timeInserted 没问题,因为我打印了他的成员并且没问题, 但是当我打印秒是 0.000000 ;

【问题讨论】:

标签: c algorithm time.h time-t difftime


【解决方案1】:

你想要

double seconds = difftime(end, start);

而不是

double seconds = difftime(start, end);

而您忘记将变量命名为 time_t=time(NULL);,请改为:

time_t now;
double seconds;

time(&now);
seconds = difftime(now, mktime(&recordFind->timeInserted));

【讨论】:

    【解决方案2】:

    请看下面

    #include <stdio.h>
    
    struct TIME
    {
        int seconds;
        int minutes;
        int hours;
    };
    
    void differenceBetweenTimePeriod(struct TIME t1, struct TIME t2, struct TIME *diff);
    
    int main()
    {    
        struct TIME startTime, stopTime, diff;
        printf("Enter start time: \n");
        printf("Enter hours, minutes and seconds respectively: ");
        scanf("%d %d %d", &startTime.hours, &startTime.minutes, &startTime.seconds);
    
        printf("Enter stop time: \n");
        printf("Enter hours, minutes and seconds respectively: ");
        scanf("%d %d %d", &stopTime.hours, &stopTime.minutes, &stopTime.seconds);
    
        // Calculate the difference between the start and stop time period.
        differenceBetweenTimePeriod(startTime, stopTime, &diff);
    
        printf("\nTIME DIFFERENCE: %d:%d:%d - ", startTime.hours, startTime.minutes, startTime.seconds);
        printf("%d:%d:%d ", stopTime.hours, stopTime.minutes, stopTime.seconds);
        printf("= %d:%d:%d\n", diff.hours, diff.minutes, diff.seconds);
    
        return 0;
    }
    
    void differenceBetweenTimePeriod(struct TIME start, struct TIME stop, struct TIME *diff)
    {
        if(stop.seconds > start.seconds){
            --start.minutes;
            start.seconds += 60;
        }
    
        diff->seconds = start.seconds - stop.seconds;
        if(stop.minutes > start.minutes){
            --start.hours;
            start.minutes += 60;
        }
    
        diff->minutes = start.minutes - stop.minutes;
        diff->hours = start.hours - stop.hours;
    }
    

    输出

    Enter start time:
    Enter hours, minutes and seconds respectively:
    12
    34
    55
    Enter stop time:
    Enter hours, minutes and seconds respectively:
    8
    12
    15
    
    TIME DIFFERENCE: 12:34:55 - 8:12:15 = 4:22:40
    

    【讨论】:

    • 这不适用于在不同日期拍摄的两个日期:(
    猜你喜欢
    • 2020-05-16
    • 1970-01-01
    • 1970-01-01
    • 2018-10-15
    • 2013-10-02
    • 1970-01-01
    • 2012-09-20
    • 2022-09-23
    相关资源
    最近更新 更多