C++ 将sys_秒设置为历元,即零

C++ 将sys_秒设置为历元,即零,c++,date,chrono,C++,Date,Chrono,我正在努力寻找一种将系统秒数重置为零的好方法 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 fun

我正在努力寻找一种将系统秒数重置为零的好方法

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
date::sys\u seconds st;
//st=日期::系统秒(0)//从“int”转换为“date::sys\u seconds”的函数样式转换没有匹配的转换
//st=date::sys_seconds{date::sys_seconds(0)}//从“int”转换为“date::sys\u seconds”的函数样式转换没有匹配的转换
//st=std::chrono::系统时钟::自时间(0)//没有可用的重载“=”
//st=日期::系统秒(std::时钟::系统时钟::从时间(0))//功能样式转换没有匹配的转换
st=std::chrono::time_point_cast(std::chrono::system_clock::from_time_t(0))//工作,但冗长
有更好的办法吗

st = {};
说明:
sys\u seconds
的默认构造函数将事物设置为零。因此,这只是一个默认值,它构造了一个
sys\u seconds
,并将其分配给
st
。其他方法包括:

st = date::sys_seconds{};
以及:


你为什么要这样做?您的第一个失败可能是您的方法被误导的迹象。我从调用例程中获得一个sys_seconds&参数,从包含一个保存时间值的字段的数据库表中获得一个结构数组。例程需要将sys_seconds和参数从数据库表中更改为最大的time_t值,因此我想将sys_seconds和参数初始化为零。啊,那么您对“零”不感兴趣,而对“最小的可能值(恰好是零)”感兴趣了?这是有道理的。对于您的实际问题,至少还有一种方法,但这可能会导致相同的问题,具体取决于数据库表为空时会发生什么。
using namespace std::chrono_literals;
st = date::sys_seconds{0s};