找出c之间的时差

时间:2014-12-21 10:58:53

标签: c datetime time

我有2个时间字符串,想要找出它们之间的区别。我的代码有效。但是当我尝试相同的值时,它会显示不同的输出。这是我的代码:

    #include <time.h>
    #include <stdio.h>
    time_t convtotime(char *time_detail,char *format){
        struct tm tm;
        strptime(time_detail,format,&tm);
        time_t t = mktime(&tm);
        return t;

    }
    int main(int argc, char const *argv[])
    {
        char buff[25];
        time_t newtime = convtotime("12/Dec/2014:10:44:19","%d/%b/%Y:%H:%M:%S");
        time_t oldtime = convtotime("12/Dec/2014:10:44:35","%d/%b/%Y:%H:%M:%S");
        printf("%lf",difftime(oldtime,newtime));
    }

它输出:

3616.000000

16.000000

1 个答案:

答案 0 :(得分:2)

manual for strptime说:

  

原则上,此函数不会初始化tm,只会存储   指定的值。 这意味着应该在之前初始化tm   电话

所以试试:

struct tm tm = {0};
strptime(time_detail, format, &tm);

the standard中的措辞也很有趣:

  

未指定是否使用相同的多次调用strptime()   tm结构将更新结构的当前内容或   覆盖结构的所有内容。