# define BOOST_DATE_TIME_POSIX_TIME_STD_CONFIG
#define BOOST_ALL_NO_LIB
#include<boost/date_time/posix_time/posix_time.hpp>
#include<iostream>
using namespace std;
using namespace boost::posix_time;
int main()
{
time_duration td(1,10,20,1000);//定义一个时间对象,1小时,10分钟,20秒,1毫秒(1000微秒)
//如果时间超出自己表达的范围如61分,则自动进位
hours h(1);//time_duration子类,1小时
minutes m(10);//10分钟
seconds s(30);//30秒
millisec ms(1);//1毫秒
time_duration td1=h+m+s+ms;//用子类的+操作创建
time_duration dt2=hours(2)+seconds(10);//直接使用赋值
//使用工厂函数创建
time_duration td3=duration_from_string("1:10:30:001");
cout<<td3<<endl;//默认输出
cout<<td3.hours()<<" "<<td3.minutes()<<" "<<td3.seconds()<<endl;
//分别获得时分秒
cout<<td3.total_seconds()<<endl;//获得总秒数
cout<<td3.total_milliseconds()<<endl;//获得总毫秒数
cout<<td3.total_microseconds()<<endl;//获得总微秒数
cout<<td3.fractional_seconds()<<endl;//获得long型微秒数
cout<<td3.is_negative()<<endl;//判断时间的正负号
time_duration td4=td3.invert_sign();
cout<<td4<<endl;//时间取反
cout<<td3.is_special()<<endl;
cout<<(td3<td4)<<endl;//时间比较函数
cout<<(td3+td4)<<endl;//时间算术运算+ -
cout<<(td3*2)<<endl;//时间乘法运算* /
cout<<to_simple_string(td3)<<endl;//HH:MM:SS.ffffffffff
cout<<to_iso_string(td3)<<endl;//HHMMSS,ffffffffff
tm t=to_tm(td3);
cout<<t.tm_hour<<endl;
getchar();
}
应用代码如上,测试结果如下: