4

这里不是问题,只是好奇。我想知道当使用其他语言的 dateTime 实现的类似操作只有 3 或 4 行时,我必须编写多少代码才能实现这一点。

所以我得到的是一个字符串形式的时间戳,即:06-Feb-2013 00:01:01

通过使用 boost lib,我将创建输入和输出方面,创建一个字符串流并将 io 方面注入流中。然后,我会将时间戳字符串读入字符串流,然后再将其移出到 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++ 是较低级别的,但我仍然不禁想知道。那么有什么改进或想法吗?

4

1 回答 1

0

如果您愿意接受稍有不同(固定)的时间格式,请使用 std::string to_simple_string(ptime) (格式化 YYYY-mmm-DD HH:MM:SS.fffffffff 字符串,其中 mmm 3 字符月份名称。仅小数秒如果非零,则根据http://www.boost.org/doc/libs/1_34_0/doc/html/date_time/posix_time.html包含)可以简化您的代码以进行输出格式化以及相应的“ptime time_from_string(std: :细绳)”。

于 2013-12-31T16:18:16.137 回答