【问题标题】:Boost ptime from time std::strings从时间 std::strings 提升 ptime
【发布时间】:2014-09-24 21:38:56
【问题描述】:

已编辑解决方案。


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

我有四个std::strings - 小时、分钟、秒和毫秒。我想从他们那里得到一个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 );

【问题讨论】:

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


【解决方案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))

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-02
    • 2017-02-14
    • 2012-05-18
    • 1970-01-01
    相关资源
    最近更新 更多