您的位置:首页 > 其它

Boost库简单运用——时间与日期的处理(三)

2014-09-26 13:32 197 查看
今天我们就开始boost的日期处理部分,日期有太多需要细细考虑的地方,遇到日期处理问题时,自己写一个处理类,那显然是极其耗时的。学习了今天的内容之后,相信我们在日期处理时将更加得心应手。今天我们学习的是boost日期处理的核心类——date。同样,下面我们从代码入手进行学习:

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

int main()
{
boost::gregorian::date d1(2014, 9, 26);
std::cout << d1 << std::endl;
std::cout << d1.year() << std::endl;
std::cout << d1.month() << std::endl;
std::cout << d1.day() << std::endl;
boost::gregorian::date::ymd_type ymd = d1.year_month_day();
std::cout << ymd.year << std::endl;
std::cout << ymd.month << std::endl;
std::cout << ymd.day << std::endl;
return 0;
}
date类算是一个比较灵活的类,初始化不仅可以传类似(2014, 9, 26)的形式,也可以传(2014, Sep, 26)的形式,当然也可以以同类对象初始化咯。对日期的获取可以使用类方法year(), month(), day(),或者可以声明date支持的ymd_type结构体,如上使用方法。若date类就这点用处,那估计大多数人都要说:“这么简陋的功能,自己写一个也比这个好。”

date的功能当然不止这些,下面我们再通过一段代码来了解它另外的功能:

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

int main()
{
boost::gregorian::date d1(2014, 9, 26);
std::cout << d1.day_of_week() << std::endl;
std::cout << d1.day_of_year() << std::endl;
std::cout << d1.end_of_month() << std::endl;
std::cout << boost::gregorian::date(2014, 9, 26).week_number() << std::endl;
return 0;
}
date类提供了成员方法可以获取初始化的日期是星期几,这一年的第几天和这个月最后一天是几号。从上面代码中的函数名我们就能了解它们谁是谁了。另外,date还能判断初始化日期是这一年的第几周。注意:boost-1.56.0中,day_of_week直接返回星期几的英文,但有些老版本中是返回数字的,0代表星期天。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: