已编辑以获得解决方案。
这应该是一项微不足道的任务,但它花了我太长时间,我开始怀疑我的理智。
我有四个std::string
秒 - 小时,分钟,秒和毫秒。我想从中获得ptime
。起初我想把字符串转换为数字(使用lexical_cast
?)并将它们插入ptime(date,time_duration)
构造函数以及一些虚拟日期(因为我不关心它),或者甚至可能今天的日期。然后我认为如果我只构造一个字符串并将其转换为我的ptime,它可能会更有效率和更少工作...但我不仅遇到链接错误,我还必须获取gregorian::date
。 / p>
此时我决定也许是在思考这个问题。我可能会在一段时间后让这两种方法中的一种工作,但我觉得我正在攻击一些应该更容易的东西。我呢?
修改
这就是我最终做的事情。它没有我想要的那么优雅,但我可以满足于它的工作。现在。
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 );
答案 0 :(得分:1)
我认为你可以做到:
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))