2013-03-08 150 views
1

爲什麼現在和現在之間的差異時間會因此而拋出一個小時?它不應該是0嗎?現在和現在之間的差異時間拋出1小時差異(C++)

time_t diffe = difftime(now, now); 
CCLOG("wow %i", localtime(&diffe)->tm_hour); 

日誌的結果= 「哇1」

THKS

+1

'現在'初始化在哪裏? – 2013-03-08 16:42:50

+2

你是否檢查過文檔? 'difftime'返回'double',表示以秒爲單位的差異,而不是'time_t'。調用'localtime'就沒有意義了 – 2013-03-08 16:45:03

回答

5

difference是值爲0的雙精度值。

當您使用time_t的值爲0時,這是epoch,這是1970-01-01 00:00:00。當你解釋這與localtime和超前的GMT一個時區一個小時你1970-01-01 01:00:00,這就是爲什麼你看到

1 hour 

「差異化」。

1

difftime返回double(秒數),而不是一個time_t

localtime另一方面,採用time_t*參數。通過double*沒有多大意義。

0

difftime以秒爲單位返回差值(雙倍)。另一方面,localtime使用提供的值初始化tm結構。所以我的猜測是你正在執行​​時區的代碼。爲了獲得幾小時內的差異,只需打印difftime(now, now)/(60.0 * 60.0)