2017-06-13 70 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:已更新。 –