如何使用速推库比较两个单独的日期

How to compare two separate dates using the Boost library?

本文关键字:两个 单独 日期 何使用 比较      更新时间:2023-10-16
gregorian::date date1 = 2014-12-18;
gregorian::date date2 = 2014-12-19;
gregorian::date currentDate;
if(date1 < date2)
{
    date1 = currentDate;
}
else
{
    date2 = currentDate;
}

与此类似的功能非常适合我的问题,我想知道是否可以比较日期,或者是否有现有的功能可以这样做?

当然,您需要正确构建日期,但除此之外,比较没有任何问题。

请注意,您需要day_clock才能获得currentDate(否则您将获得not-a-datetime (

住在科里鲁

#include <boost/date_time/gregorian/greg_date.hpp>
#include <boost/date_time/gregorian/gregorian_io.hpp>
#include <iostream>
using namespace boost;
int main() {
    gregorian::date date1(2014, 12, 18);
    gregorian::date date2(2014, 12, 19);
    std::cout << date1 << ", " << date2 << "n";
    (date1 < date2 ? date1 : date2) = gregorian::day_clock::local_day();
    std::cout << date1 << ", " << date2 << "n";
}

这会将最低值替换为当前日期,打印

2014-Dec-18, 2014-Dec-19
2014-Dec-19, 2014-Dec-19

有关公历日期的文档说所有比较运算符都可用。请参阅 http://www.boost.org/doc/libs/1_35_0/doc/html/date_time/gregorian.html#date_operators

我认为你不想要这个:

gregorian::date date1 = 1984; // 2014-12-18 = 2014 - 12 - 18 = 1984
gregorian::date date2 = 1983; // 2014-12-19 = 2014 - 12 - 19 = 1983

尝试查看:

date(greg_year, greg_month, greg_day)

date from_string(std::string)