我有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
答案 0 :(得分:2)
原则上,此函数不会初始化tm,只会存储 指定的值。 这意味着应该在之前初始化tm 电话。
所以试试:
struct tm tm = {0};
strptime(time_detail, format, &tm);
the standard中的措辞也很有趣:
未指定是否使用相同的多次调用strptime() tm结构将更新结构的当前内容或 覆盖结构的所有内容。