【发布时间】:2016-08-15 03:21:09
【问题描述】:
我目前正在玩弄boost::date_time。这样做时,我发现了days_until_weekday (documentation link) 函数,它对我来说非常有用。不幸的是,我从以下 sn-p 得到一个编译时错误
date f(date d){
return next_weekday(d, boost::date_time::weekdays::Friday);
}
阅读
> In file included from
> /usr/include/boost/date_time/gregorian/gregorian_types.hpp:25:0,
> from /usr/include/boost/date_time/posix_time/posix_time_config.hpp:18,
> from /usr/include/boost/date_time/posix_time/posix_time_system.hpp:13,
> from /usr/include/boost/date_time/posix_time/ptime.hpp:12,
> from /usr/include/boost/date_time/posix_time/posix_time.hpp:15,
> from prog.cpp:3: /usr/include/boost/date_time/date_generators.hpp: In instantiation of
> 'typename date_type::duration_type
> boost::date_time::days_until_weekday(const date_type&, const
> weekday_type&) [with date_type = boost::gregorian::date; weekday_type
> = boost::date_time::weekdays; typename date_type::duration_type = boost::gregorian::date_duration]':
> /usr/include/boost/date_time/date_generators.hpp:488:34: required
> from 'date_type boost::date_time::next_weekday(const date_type&, const
> weekday_type&) [with date_type = boost::gregorian::date; weekday_type
> = boost::date_time::weekdays]' prog.cpp:11:67: required from here /usr/include/boost/date_time/date_generators.hpp:452:37: error:
> request for member 'as_number' in 'wd', which is of non-class type
> 'const boost::date_time::weekdays'
> duration_type dd(wd.as_number() - d.day_of_week().as_number());
去here 粘贴我的代码。
由于导致错误的 sn-p 太短,我真的没有办法解决这个问题。
顺便说一句,我正在使用 clang 3.7.0 在 boost 1.60.0 上。
【问题讨论】:
-
只要你对日期/时间库感到厌烦,这里有一个基于 C++11 chrono 的库:github.com/HowardHinnant/date 相同操作的语法是
return d + (date::fri - date::weekday{d});。上周五看起来像return d - (date::weekday{d} - date::fri);。
标签: c++ datetime boost weekday boost-date-time