1
我在我的程序中使用了std::chrono::system_clock::time_point
。 當應用程序停止時,我想將文件保存到time_point
中,並在應用程序啓動時再次加載。在應用程序外部存儲time_point
如果這是一個UNIX時間戳,我可以簡單地將該值存儲爲整數。有沒有類似的方式來存儲time_point
?
我在我的程序中使用了std::chrono::system_clock::time_point
。 當應用程序停止時,我想將文件保存到time_point
中,並在應用程序啓動時再次加載。在應用程序外部存儲time_point
如果這是一個UNIX時間戳,我可以簡單地將該值存儲爲整數。有沒有類似的方式來存儲time_point
?
是的。選擇您想要的時間戳精度(秒,毫秒,...納秒)。再鑄造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}};
}
謝謝,我會檢查它的明天! – Bobface
我該如何將時間戳重新轉換爲'time_point'? – Bobface
@Bobface:已更新。 –