这里不是问题,只是好奇心。我想知道当我用其他语言的dateTime实现的类似操作只有3或4行时,我必须编写的代码量才能实现这一点。
所以我得到的是一个字符串的时间戳,即:06-Feb-2013 00:01:01
通过使用boost lib,我将创建输入和输出facet,创建一个stringstream并将io facets填充到流中。然后我将时间戳字符串读入字符串流,然后将其移出到posix时间对象,然后将其添加1秒,然后再将其移回流中,以便将其用作字符串。从某种意义上说,我在这里所做的就是将06-Feb-2013 00:01:01
之类的时间戳转换为06-Feb-2013 00:01:02
。
一个例子是:
using namespace boost::posix_time;
ptime timeStamp;
time_facet* outFacet = new time_facet("%d-%b-%Y %H:%M:%S");
time_input_facet* inFacet = new time_input_facet("%d-%b-%Y %H:%M:%S");
std::stringstream ss;
ss.imbue(std::locale(std::locale::classic(), outFacet));
ss.imbue(std::locale(ss.getloc(), inFacet));
ss.str(06-Feb-2013 00:01:01);
ss >> timeStamp;
timeStamp+=seconds(1);
ss.str("");
ss << timeStamp;
代码有效,我没有问题。我只是想知道我是否在迂回的方式中考虑使用python / ruby / js等,我所要做的就是以下内容:
dt = new DateTime("06-Feb-2013 00:01:01", aformat);
dt.addSecond() //or dt += another DateTime object
dt.strformat(aformat) //or trace/print/puts dt
现在我欣赏C ++的级别较低,但我仍然不禁疑惑。那么任何改进或想法?
答案 0 :(得分:0)
如果您愿意接受稍微不同(固定)的时间格式,请使用std :: string to_simple_string(ptime)(格式化YYYY-mmm-DD HH:MM:SS.fffffffff字符串,其中mmm 3 char月份名称。如果非零,每个http://www.boost.org/doc/libs/1_34_0/doc/html/date_time/posix_time.html)可以简化代码以进行输出格式化以及相应的“ptime time_from_string(std :: string)”,则仅包括小数秒。