从提升日期获取年份作为字符串

时间:2013-07-23 11:49:14

标签: c++ date boost

我正在使用boost的日期对象 我想从这个对象得到年份字符串或int

我没有找到这样做的简单方法 谢谢! 罗恩

2 个答案:

答案 0 :(得分:5)

#include <boost/date_time/local_time/local_time.hpp>
#include <boost/lexical_cast.hpp>
#include <string>


std::string x = boost::lexical_cast<std::string>
                    (second_clock::local_time().date().year());

应该这样做。

答案 1 :(得分:0)

我为我的一个项目写了这些函数,你可能会发现它们很有用。我发现lexical_cast导致我的特定代码出现性能问题之后就这样做了。 (没有保证,虽然它在我们的产品环境中运行了几年;)

using namespace boost;
    gregorian::date date_from_str(const char* dateStr,const char* format) {
        int year;
        int month;
        int day;
        sscanf_s(dateStr,format,&year,&month,&day);
        return gregorian::date(year,month,day);
    }
    std::string date_to_str(const gregorian::date& date,const char* format) {
        char buf[10];
        gregorian::date::ymd_type ymd = date.year_month_day();
        sprintf_s(buf,sizeof(buf),format,ymd.year,ymd.month,ymd.day);
        return std::string(buf);
    }

    gregorian::date dateInt_to_date(int dateInt) {
        const int day = dateInt % 100;
        const int month = (dateInt / 100) % 100;
        const int year = dateInt / 10000;
        return gregorian::date(year,month,day);
    }

您可以编辑它以仅返回年份部分