字符串,以提升posix_time然后再回来

时间:2013-04-07 05:27:34

标签: c++ datetime boost

这里不是问题,只是好奇心。我想知道当我用其他语言的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 ++的级别较低,但我仍然不禁疑惑。那么任何改进或想法?

1 个答案:

答案 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)”,则仅包括小数秒。