2017-06-13 73 views
1

我在我的程序中使用了std::chrono::system_clock::time_point。 當應用程序停止時,我想將文件保存到time_point中,並在應用程序啓動時再次加載。在應用程序外部存儲time_point

如果這是一個UNIX時間戳,我可以簡單地將該值存儲爲整數。有沒有類似的方式來存儲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:已更新。 –