gpt4 book ai didi

c++ - boost posix_time 的字符串,然后再返回

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:23:40 29 4
gpt4 key购买 nike

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

所以我得到的是作为字符串的时间戳,即:06-Feb-2013 00:01:01

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

最佳答案

如果您愿意接受稍微不同的(固定的)时间格式,使用 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)”。

关于c++ - boost posix_time 的字符串,然后再返回,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15859204/

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