为 'std::chrono' 解析此时间字符串有什么问题?
What is wrong with parsing this time string for 'std::chrono'?
我只是想将时间字符串解析为 chrono::system_clock::time_point
使用:
#include <iosfwd>
#include "date/date.h"
std::stringstream ssTime;
ssTime << "17:34:05";
std::chrono::system_clock::time_point tp_time;
ssTime >> date::parse("%H:%M:%S", tp_time);
我希望在 EPOCH
之后得到指定时间的 time_point
,但我得到的却是 0(即 EPOCH
)。
请注意,我使用的是 date library of Howard Hinnant .
parse
函数的设计是,如果你没有为被解析的类型解析足够的信息,那么在stream上设置failbit
。 parse
认为 {h, m, s}
信息不足以唯一确定一个时间点 (a system_clock::time_point
),因此此解析失败。
您可以通过解析为 seconds
持续时间来完成这项工作:
#include "date/date.h"
#include <sstream>
int
main()
{
std::stringstream ssTime;
ssTime << "17:34:05";
std::chrono::seconds tp_time;
ssTime >> date::parse("%H:%M:%S", tp_time);
}
tp_time
在此示例中的值为 63245s。
我只是想将时间字符串解析为 chrono::system_clock::time_point
使用:
#include <iosfwd>
#include "date/date.h"
std::stringstream ssTime;
ssTime << "17:34:05";
std::chrono::system_clock::time_point tp_time;
ssTime >> date::parse("%H:%M:%S", tp_time);
我希望在 EPOCH
之后得到指定时间的 time_point
,但我得到的却是 0(即 EPOCH
)。
请注意,我使用的是 date library of Howard Hinnant .
parse
函数的设计是,如果你没有为被解析的类型解析足够的信息,那么在stream上设置failbit
。 parse
认为 {h, m, s}
信息不足以唯一确定一个时间点 (a system_clock::time_point
),因此此解析失败。
您可以通过解析为 seconds
持续时间来完成这项工作:
#include "date/date.h"
#include <sstream>
int
main()
{
std::stringstream ssTime;
ssTime << "17:34:05";
std::chrono::seconds tp_time;
ssTime >> date::parse("%H:%M:%S", tp_time);
}
tp_time
在此示例中的值为 63245s。