从时间std::string提升ptime

Boost ptime from time std::strings

本文关键字:提升 ptime string std 时间      更新时间:2023-10-16

为解决方案编辑


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

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