2017-08-03 5 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'の時刻は、エポックからの秒数です。今、あなたはどのように2つの違いを得るのですか?そしてその違いをどのように時間に変換しますか?少し考えてみよう! –

+0

st_atimeはファイル作成時刻ではなく、最終アクセス時刻です。 – stark

答えて

1

私は自動車やクロノことによってそれを解決しますが、あなたWA場合分のサンプルがあります最初は、コードで簡単に数分から数時間に変更できると言っていたので、nt時間です。

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

これら2つのリンクはherehere

+0

'GetFileTime()'はウィンドウ固有のものです(Windows APIの一部)。質問には、Windows固有の解決策が必要であることを示唆する形でタグが付けられていません。 – Peter

-1

私は右のあなたを得た場合、問題は時間でデルタ時間を表現についてです...ので、あなたが読んでトラブルを抱えていないのに役立つかもしれないGetFileTime を見てみましょうファイルの作成時刻、または実際の時間... だからのように行くことができます:

#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; 
} 
関連する問題