#define BOOST_DATE_TIME_SOURCE
#include<iostream>
#include<libs/date_time/src/gregorian/greg_names.hpp>
#include<libs/date_time/src/gregorian/date_generators.cpp>
#include<libs/date_time/src/gregorian/greg_month.cpp>
#include<libs/date_time/src/gregorian/greg_weekday.cpp>
#include<boost/date_time/gregorian/gregorian.hpp>
using namespace std;
using namespace boost::gregorian;
int main()
{
date d1(1991,5,1);
days day(100);
date_period dp(d1,day);
cout<<dp<<endl;//移动前时间区间
dp.shift(days(5));//向后移动5天
cout<<dp<<endl;
dp.shift(days(-10));//向前移动10天
cout<<dp<<endl;
cout<<dp.begin().day()<<endl;
cout<<dp.length().days()<<endl;//区间大小
dp.expand(days(10));//左右扩展10天
cout<<dp<<endl;
date birthday(1991,4,15);
date mybirthday(1991,5,1);
date temp(2010,1,1);
date_period dp1(mybirthday,days(0));
date_period dp2(birthday,days(0));
date_period dp3(temp,days(10));
dp1.expand(days(20));
dp2.expand(days(20));
cout<<"区间1 "<<dp1<<endl;
cout<<"区间2 "<<dp2<<endl;
cout<<"区间1是否在日期之前 "<<dp1.is_before(birthday)<<endl;//区间是否在某个日期之前
cout<<"区间是否在日期之后 "<<dp1.is_after(birthday)<<endl;//区间是否在某个日期之后
cout<<"日期是否在区间之内 "<<dp1.contains(birthday)<<endl;//区间是否包含日期
cout<<"区间1是否包含区间2 "<<dp1.contains(dp2)<<endl;//区间是都包含另一个区间
cout<<"区间之间是否有交集 "<<dp1.intersects(dp2)<<endl;//两个区间之间是否有交集
cout<<"区间1 2之间的交集 "<<dp1.intersection(dp2)<<endl;//区间1 2之间的交集区间
cout<<"区间之间是否相邻 "<<dp1.is_adjacent(dp2)<<endl;//区间是否相邻
cout<<"区间之间的并集"<<dp1.merge(dp2)<<endl;//区间之间的并集,如果没有交集,并集是个无效区间
cout<<"区间之间的并集"<<dp1.span(dp3)<<endl;//广义并集,填满两个区间间的间隔
getchar();
}
上面是对时间段之间以及时间段与时间之间的关系运算,运行结果如下: