2010-02-18 83 views
0

如何初始化Boost日期?

http://www.boost.org/doc/libs/1_42_0/doc/html/date_time/gregorian.html#date_construction

解释说,你可以初始化Boost日期用这种调用:

date d(2002, Jan, 10); 

但是,当我尝试,编译器不知道“扬”。

它一起工作:

date d(2002, 1, 10); 

编辑:

#include <boost/date_time/gregorian/gregorian.hpp> 
.. 
{ 
    using namespace boost::gregorian; 

    date limit_date(2010,Apr,1); 
    date fake_date(2010,2,1); 

    if (fake_date>limit_date) 
    { 
     ... 
    } 
} 

回答

0

也许你错过了,包括所需的命名空间?我不能说哪一个准确,因为你没有张贴整个代码,但我想,它可以是这样的:

using namespace boost::gregorian; 

using namespace boost::date_time; 

更新:

Defenition扬:

namespace boost { 
namespace date_time { 

    //! An enumeration of weekday names 
    enum weekdays {Sunday, Monday, Tuesday, Wednesday, Thursday, Friday, Saturday}; 

    //! Simple enum to allow for nice programming with Jan, Feb, etc 
    enum months_of_year {Jan=1,Feb,Mar,Apr,May,Jun,Jul,Aug,Sep,Oct,Nov,Dec,NotAMonth,NumMonths}; 

} } //namespace date_time 
+0

不,这不是问题。它只与数字一起工作(我更新了初始消息)。 – Oodini 2010-02-18 17:39:16

+0

是的,Jan是枚举的成员,所以它仍然可能是命名空间的问题。你能发布完整的代码吗? – woo 2010-02-18 18:27:51

+0

是的,我知道这是一个枚举,但我没有找到它的定义... 我在初始消息中添加了代码。 – Oodini 2010-02-19 09:38:16

0

OK,我发现(傻)解决方案:我只是忘了DATE_TIME链接到我自己的图书馆......

由于boost :: date_time的某些部分不需要显式链接,因此它们起作用。这就是为什么我没有这样探索。

感谢Jan的帮助和枚举!