首页 > 解决方案 > 将 sys_seconds 设置为纪元,即零

问题描述

我正在努力寻找一种将 sys_seconds 重置为零的好方法

date::sys_seconds st;
//st = date::sys_seconds(0);            //no matching conversion for functional-style cast from 'int' to 'date::sys_seconds'
//st = date::sys_seconds{date::sys_seconds(0)}; //no matching conversion for functional-style cast from 'int' to 'date::sys_seconds'
//st = std::chrono::system_clock::from_time_t(0);   //no viable overloaded '='
//st = date::sys_seconds(std::chrono::system_clock::from_time_t(0));    //no matching conversion for functional-style cast 
st = std::chrono::time_point_cast<std::chrono::seconds>(std::chrono::system_clock::from_time_t(0)); //works, but verbose

有没有更好的办法?

标签: c++datechrono

解决方案


st = {};

说明: 的默认构造函数sys_seconds将事物设置为零。所以这只是默认构造 asys_seconds并将其分配给st. 其他方法包括:

st = date::sys_seconds{};

和:

using namespace std::chrono_literals;
st = date::sys_seconds{0s};

推荐阅读