gpt4 book ai didi

c++ - 比较日期 C++(使用 boost )

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

我需要能够在 C++ 中转换和比较日期。我发现 boost 库非常适合我的需要,但我无法让它正常工作:

 // include headers... 

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

ptime p1(second_clock::universal_time());

p1 -= weeks(5); // Subtract 5 weeks from p1 using boost...

std::string old_date("2011-11-19"); // format:YYYY-MM-DD

std:stringstream ss(old_date);

ptime p2;

p2 << ss;

if(p1 <= p2){
// this should not happen in this case (yet it does!) p1 > p2!!
}

基本上我希望能够减去本地日期的周(或月),然后将结果与以 YYYY-MM-DD 格式的字符串给出的日期进行比较......

最佳答案

您的语言环境可能未设置为识别 YYYY-MM-DD 格式的日期。尝试将输入方面格式设置为 Format Strings示例。

下面是一个示例,说明如何将字符串流的输入和输出格式设置为“ISO 扩展”:

#include <iostream>
#include <boost/date_time/posix_time/posix_time.hpp>

int main()
{
using namespace boost::gregorian;
using namespace boost::posix_time;
using namespace std;

stringstream ss;

/****** format strings ******/
time_facet* output_facet = new time_facet();
time_input_facet* input_facet = new time_input_facet();
ss.imbue(locale(ss.getloc(), output_facet));
ss.imbue(locale(ss.getloc(), input_facet));
output_facet->format(time_facet::iso_time_format_extended_specifier);
input_facet->format(time_input_facet::iso_time_format_extended_specifier);
ptime t(second_clock::local_time());
ss << t;
cout << ss.str() << endl; // 2012-08-03 23:46:38
ss.str("2000-01-31 12:34:56");
ss >> t;
assert(t.date().year() == 2000);
assert(t.date().month() == 1);
assert(t.date().day() == 31);
assert(t.time_of_day().hours() == 12);
assert(t.time_of_day().minutes() == 34);
assert(t.time_of_day().seconds() == 56);
}

关于c++ - 比较日期 C++(使用 boost ),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11805050/

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