为解决方案编辑。
这应该是一项微不足道的任务,但它花了我太长的时间,我开始怀疑自己的理智。
我有四个std::string
s——小时、分钟、秒和毫秒。我想从他们那里得到一个ptime
。起初,我想将字符串转换为数字(使用lexical_cast
?(,并将它们与一些伪日期一起插入ptime(date,time_duration)
构造函数(因为我不在乎(,甚至可能与今天的日期一起插入。然后我想,如果我只构造一个字符串并将其转换为我的ptime,可能会更高效,工作量更少。。。但我不仅遇到了链接错误,还必须获取gregorian::date
。
在这一点上,我决定也许我想得太多了。一段时间后,我可能会使用这两种方法中的一种,但我觉得我正在破解一些应该更容易的东西。是吗?
编辑
以下是我最终做的事情。它没有我想要的那么优雅,但我可以满足于它的工作。现在。
using namespace boost::posix_time;
using namespace boost::gregorian;
std::string date_str = to_iso_extended_string( day_clock::local_day() ); // YYYY-MM-DD
std::string time_str( " " + hours + ":" + minutes + ":" + seconds + "." + milliseconds); // HH:MM:SS:MMM
return time_from_string( date_str + time_str );
我认为你可以做到:
using namespace boost::posix_time;
long h = 1, m = 1, s = 1;//Get these from your lexical cast
ptime t(ptime(min_date_time) + hours(h) + minutes(m) + seconds(s));
std::cout << t << std::endl;//! output is 1400-Jan-01 01:01:01
min_date_time假设您不关心日期(它使用最早可表示的日期。(
或者你可以使用:
std::string ts("2002-01-20 23:59:59.000");
ptime t(time_from_string(ts))