2013-01-09 33 views
1

如何我能得到天數,因爲時代在C++中,我知道我應該使用mktime功能,但我無法理解如何實現它因爲用C時代獲得的天數+(跨平臺)

謝謝!

+0

是對mktime()所需的功能?根據你在做什麼,你可能想考慮推出你自己的解決方案。如果我要這樣做,我首先要編寫一個計算自年初以來的天數的程序。如果您遇到問題,請再備份一個步驟,並編寫一個計算自本月初以來的天數的程序。 (請注意,我建議簡化問題,找到一個小問題可以輕鬆解決並幫助解決更大的問題,這總是一個好主意。 –

+0

http://www.boost.org/doc/libs/ 1_39_0/doc/html/date_time/examples.html#date%5Ftime.examples.seconds%5Fsince%5Fepoch –

+0

@代碼大師,不,不需要mktime – Breakdown

回答

2

修改一些示例代碼從cplusplus.com

#include <stdio.h> 
#include <time.h> 

int main() 
{ 
    time_t seconds; 

    seconds = time (NULL); 
    int daysSinceEpoch = seconds/(60*60*24); 
    printf ("%ld days since January 1, 1970", daysSinceEpoch); 

    return 0; 
} 
+3

日期時間是不同的事情,一天不只是24小時,它是一個日期和下一個日期之間的差異,包括閏秒,夏令時調整等。 – bames53

1

通過獲取當前的時間,與time(NULL)開始。將該值傳遞給gmtime,這會返回tm*。閱讀tm的文檔。

0

日期不容易正確工作。目前的標準庫不能正確地執行此操作。您應該使用適當的日期庫,例如boost :: date或Howard Hinnant's <date>

隨着Hinnant(欣南特)的庫中的代碼可能是這個樣子:

date epoch = year(1970)/jan/day(1); // Assuming you're referring to the traditional Unix epoch (some systems such as Cocoa on OS X use the first day of the millenium, Jan 1, 2001 as their epoch) 
days d = date::today() - epoch;