2017-08-03 87 views
1

嗨如何獲得創建文件和現在時間之間的差異並將其轉換爲小時。C++舊時間到現在時間以小時爲單位

for (unsigned i = 0; i < strpokenter code herele.size(); i++) 
{ 
    const char * conv_my_str = strpole[i].c_str(); 
    stat(conv_my_str, & stbuf); 
    oldate = ctime(& stbuf.st_atime); 
    cout << oldate; 
    time(& rawtime); 
    nowdate = ctime(& rawtime); 
    cout << nowdate; 
    getchar(); 
} 
+2

那麼'時間'返回的時間就是從時代開始的秒數。 'st_atime'中的時間是自紀元以來的秒數。現在你如何得到兩者之間的區別?你如何將這種差異轉化爲幾個小時?想一點! –

+0

st_atime不是文件創建時間,它是上次訪問時間。 – stark

回答

1

我解決它通過自動和時辰但樣品與分鐘,如果你はnt小時,因爲我第一次說你可以輕鬆地將代碼中的分鐘數改爲數小時。

auto now = std::chrono::duration_cast<std::chrono::minutes>(actTime - std::chrono::system_clock::from_time_t(stbuf.st_ctime)).count(); 
-1

看看GetFileTime 這2個鏈接可以幫助herehere

+0

'GetFileTime()'是windows特定的(windows API的一部分)。問題沒有以任何方式標記,暗示需要特定於Windows的解決方案。 – Peter

-1

如果我得到你的權利的問題是關於代表增量時間以小時......這樣你就不會有麻煩閱讀該文件,或實際時間的創建時間...... 所以你可以爲去:

#include <iostream> 
#include <string> 

std::string getDuration(const long ms) { 

    int seconds = (int)(ms/1000) % 60; 
    int minutes = (int)((ms/(1000 * 60)) % 60); 
    int hours = (int)((ms/(1000 * 60 * 60)) % 24); 

    return "H:" + std::to_string(hours) +",M:"+ std::to_string(minutes)+",S:"+ std::to_string(seconds); 
} 

int main() { 
    long ms = 60 * 1000; 
    std::cout << "Duration: " << getDuration(ms) << std::endl; 
    return 0; 
} 
相關問題