【发布时间】:2015-11-12 14:09:27
【问题描述】:
我有一个自定义的 Epoc 日期,它不同于 STL 中的硬编码 Epoc。我想找出特定天数之后的新日期。
std::string ReturnDateTimeAsString(long double NumberOfDaysSinceEpoc)
{
std::istringstream iss("1200-01-01.00:00:00"); // My custom Epoc
std::tm Time;
iss >> std::get_time(&Time, "%Y-%m-%d.%H:%M:%S");
std::chrono::system_clock::time_point MyEpoc = std::chrono::system_clock::from_time_t(std::mktime(&Time));
std::chrono::duration<long double, std::ratio<86400, 1>> Days(NumberOfDaysSinceEpoc); // 86400: Seconds in a day
std::chrono::system_clock::time_point DateTime = MyEpoc + Days; // I get the error here!
std::time_t TimeType = std::chrono::system_clock::to_time_t(DateTime);
return std::string(std::ctime(&TimeType));
}
函数参数可以是十进制。例如,如果我将4.25 传递给此函数,我想从中获取字符串"1200-01-05.06:00:00"(Epoc 后4 天6 小时)。
我在尝试添加 Epoc 和 Days 变量的行中收到以下错误消息。
Cannot convert from 'std::chrono::time_point<std::chrono::system_clock,std::chrono::duration<long double,std::ratio<0x01,0x0989680>>>'
to
'std::chrono::time_point<std::chrono::system_clock,std::chrono::system_clock::duration>'
No suitable user-defined conversion from
"std::chrono::time_point<std::chrono::system_clock, std::chrono::duration<long double, std::ratio<1i64, 10000000i64>>>"
to
"std::chrono::system_clock::time_point"
如何修复此代码?
【问题讨论】: