boost准模板库date_period()(时间段使用 续1)时间段之间的关系运算

本文深入探讨了Boost库中的date_period类,介绍如何进行时间段之间的关系运算,包括与日期的交互。通过实例展示了不同时间段的比较和操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

#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();


}


上面是对时间段之间以及时间段与时间之间的关系运算,运行结果如下:



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值