2017-06-13 4 views
1

私のプログラムでstd::chrono::system_clock::time_pointを使用しています。 アプリケーションが停止したら、ファイルにtime_pointに保存し、アプリケーションの起動時に再度ロードします。アプリケーションの外にtime_pointを保存する

UNIX-Timestampの場合、単純に値を整数として保存できます。同様にtime_pointを保存する方法はありますか?

答えて

1

はい。タイムスタンプを希望する精度を(秒、ミリ秒、...ナノ秒)で選択します。その数値を抽出し、その精度にsystem_clock::time_pointをキャストし、それを印刷する標準で指定されていないが

cout << time_point_cast<seconds>(system_clock::now()).time_since_epoch().count(); 

、上記の行は(事実上の)移植1970-ので非うるう秒の数を出力します。 01-01 00:00:00 UTC。つまり、これはUNIX-Timestampです。

私は、上記のコードを標準に恵まれて、今日のすべての実装で実際に行っていることを実行しようとしています。そして、私はstd :: chronoの実装者の非公式な保証を持っています。その間、彼らはsystem_clockエポックを変更しません。ここで

は、完全な往復例です:

#include <chrono> 
#include <iostream> 
#include <sstream> 


int 
main() 
{ 
    using namespace std; 
    using namespace std::chrono; 

    stringstream io; 
    io << time_point_cast<seconds>(system_clock::now()).time_since_epoch().count(); 

    int64_t i; 
    system_clock::time_point tp; 
    io >> i; 
    if (!io.fail()) 
     tp = system_clock::time_point{seconds{i}}; 
} 
+0

は、私は明日それをチェックします、ありがとうございます! – Bobface

+0

タイムスタンプを 'time_point'にキャストする方法はありますか? – Bobface

+0

@Bobface:updated。 –

関連する問題