我尝试使用 C++ Boost date_time 库将格式为“2012 年 12 月 12 日 16:43”的字符串加载到日期输入方面为“%H:%M %B %d, %Y”的字符串流中。接下来,我想从 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 调试,但无法弄清楚。任何帮助将不胜感激。