2014-12-06 67 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

相關問題