2014-12-06 25 views
0

我想获取两个日期之间的差异。 现在有一个日期,另一个日期是从日期的字符串表示形式转换为time_t的日期。使用从字符串转换的time_t获取时间差

我的代码如下

const char *time_details = "12/03/2014"; 
    struct tm tm; 
    strptime(time_details, "%m/%d/%Y", &tm); 
    time_t mytime = mktime(&tm); 

    time_t now; 
    time(&now); 
    double seconds = difftime(now, mytime); 

    LOGG("now = %d", now); 

    LOGG("mytime = %d", mytime); 
    LOGG("unsigned int mytime = %d", (int)mytime); 

我的输出看起来像这样:

now = 1417830679 
mytime = -1 
seconds = 1610001720 

指明MyTime对应永远是-1 而且,对于秒值不正确或者。

+0

memset(&tm, 0, sizeof(struct tm)); 

参见注释部分做了什么合理的展现在'tm'吗? – 2014-12-06 02:18:29

+0

'strptime'的返回值是什么? – 2014-12-06 02:39:01

+0

tm是有效的并且包含正确的值。 – JoeyZee 2014-12-08 18:16:27

回答

1

添加使用前(和你可能想选择一个不同的名称为变量)在strptime(3)

+1

这就是它,'mktime'在出现无效输入时失败。你不需要使用'memset',只需要'struct tm t = {};'。 – 2014-12-06 02:46:04

相关问题