gpt4 book ai didi

c++ - 如何从日期输入方面创建 Boost ptime 对象

转载 作者:搜寻专家 更新时间:2023-10-31 01:51:17 33 4
gpt4 key购买 nike

我尝试使用 C++ Boost date_time 库将格式为“2012 年 12 月 12 日 16:43”的字符串加载到日期输入面为“%H:%M %B %d, %”的字符串流中是”。接下来我想从 stringstream 创建一个 Boost ptime 对象,这样我就可以进行日期/时间数学运算。我无法让它工作——下面是代码:

std::string autoMatchTimeStr(row["message_time"]);
ptime autoMatchTime(time_from_string(autoMatchTimeStr));

date_input_facet* fin = new date_input_facet("%H:%M %B %d, %Y");
stringstream dtss;

dtss.imbue(std::locale(std::locale::classic(), fin));
dtss << msg.getDate(); //msg.getDate() returns “16:43 December 12, 2012”

ptime autoMatchReplyTime;
dtss >> autoMatchReplyTime;

if( autoMatchReplyTime < autoMatchTime + minutes(15)) {
stats[ "RespTimeLow" ] = "increment";
sysLog << "RespTimeLow" << flush;
}

autoMatchTime 包含有效的日期/时间值,但 autoMatchReplyTime 不包含。我想了解它应该如何工作,但如果我必须使用 C strptime 为 ptime 构造函数初始化 struct tm,我可以做到这一点。我花了很多时间研究、编码、使用 gdb 进行调试,但无法弄清楚。任何帮助将不胜感激。

最佳答案

那么...您为什么要尝试使用 date_input_facet 而不是 time_input_facet?以下示例工作正常。

#include <sstream>
#include <boost/date_time/posix_time/posix_time.hpp>

int main()
{
const std::string time = "16:43 December 12, 2012";
boost::posix_time::time_input_facet* facet =
new boost::posix_time::time_input_facet("%H:%M %B %d, %Y");
std::stringstream ss;
ss.imbue(std::locale(std::locale(), facet));
ss << time;
boost::posix_time::ptime pt;
ss >> pt;
std::cout << pt << std::endl;
}

code

关于c++ - 如何从日期输入方面创建 Boost ptime 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13997839/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com