【问题标题】:cannot convert »boost::gregorian::date_duration« to »int无法将 »boost::gregorian::date_duration« 转换为 »int
【发布时间】:2012-06-05 17:13:23
【问题描述】:

我正在使用 boost 库并且只使用 int

但我收到错误消息:

cannot convert »boost::gregorian::date_duration« to »int

我能做什么?请帮忙,我只想检查我的日期是否超过了当前日期.. 我得到了正确的答案,但无法使用。 (range.length())

#include <iostream>
#include <boost/date_time/gregorian/gregorian.hpp>
#include <ctime>
#include <fstream>

namespace bdt = boost::gregorian;
using namespace std;

int main(void)
{

time_t now = time(0);
tm *ltm = localtime(&now);

//Aktuelles Datum
    int y = 1900 + ltm->tm_year;
    int d = ltm->tm_mday;
    int m = 1 + ltm->tm_mon;
    bdt::date today(bdt::date(y, m, d));


//Ziel                               y   m   d  
    bdt::date electionDay(bdt::date(2012, 6, 6));
    bdt::date_period range(today, electionDay);


    std::cout  << range.length() << std::endl;
            int z = range.length() ;  



    return 0;
}

【问题讨论】:

    标签: c++ boost boost-date-time


    【解决方案1】:

    假设您希望整数表示期间的天数,那么:

    range.length().days()
    

    或者,如果您想比较日期,您可以在不转换为句点、持续时间、整数或其他任何内容的情况下执行此操作:

    if (today > electionDay) {
        std::cout << "Election day is in the past\n";
    }
    

    【讨论】:

      【解决方案2】:

      length() 返回date_duration 实例。您可以使用它的成员函数之一来获得您想要的。例如,range.length().days();

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-06-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-03-15
        • 1970-01-01
        相关资源
        最近更新 更多