gpt4 book ai didi

c++ - Boost Gregorian Date 格式产生错误的结果

转载 作者:行者123 更新时间:2023-11-28 02:10:08 24 4
gpt4 key购买 nike

这是我的代码。我希望输出“2016-03-15”。但在我的 Ubuntu 14.04、g++ (Ubuntu 4.8.4-2ubuntu1~14.04.1) 4.8.4、eclipse 调试环境中的代码输出“2016-Mar-15”下方。

boost::gregorian::date current_date(boost::gregorian::day_clock::local_day());
boost::gregorian::date_duration dd(offset);
boost::gregorian::date offset_date = current_date - dd;

auto facet = new pt::time_facet("%Y-%m-%d");
std::stringstream ss;
ss.imbue(std::locale(std::cout.getloc(), facet));
ss << offset_date;

std::cerr << ss.str() << std::endl;

构建并运行,结果为

2016-Mar-15

我想知道结果...与语言环境有什么关系吗?

最佳答案

谢谢。全部。我解决了!这是我的错误。为大家知识,我留下我的答案:)我喜欢 Stackoverflow!

using namespace boost::gregorian;
using namespace boost::local_time;
using namespace boost::posix_time;

date current_date(boost::gregorian::day_clock::local_day());
date_duration dd(offset);
date offset_date = current_date - dd;

这是正确的。我应该使用“date_facet”而不是“time_facet”

auto facet = new boost::gregorian::date_facet();
std::stringstream ss;
facet->format("%Y-%m-%d");
ss.imbue(std::locale(locale::classic(), facet));
ss << offset_date;
std::cerr << ss.str() << std::endl; // output : 2016-03-15

这是错误的。我不应该使用“time_facet”

auto facet2 = new boost::posix_time::time_facet();
std::stringstream ss2;
facet->format("%Y-%m-%d");
ss2.imbue(std::locale(locale::classic(), facet2));
ss2 << offset_date;
std::cerr << ss2.str() << std::endl; // output : 2016-Mar-15

关于c++ - Boost Gregorian Date 格式产生错误的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36002076/

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