从时间std :: strings中提升ptime

时间:2014-08-01 16:08:42

标签: c++ boost boost-date-time

已编辑以获得解决方案。


这应该是一项微不足道的任务,但它花了我太长时间,我开始怀疑我的理智。

我有四个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 );

1 个答案:

答案 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))