学习内容见《Boost程序库完全开发指南》第2章 时间与日期
学习三个类的使用timer、progress_timer、date。
Boost库的配置可参照:http://blog.csdn.net/segen_jaa/article/details/7407404。
开发环境:WinXP+VS2005+ boost_1_49_0。
以下所有示例程序均为控制台程序。
1、timer类
timer类是一个小型的计时器,提供毫秒级别的计时精度。
#include "stdafx.h" #include <iostream> #include <boost/timer.hpp> using namespace std; using namespace boost; int _tmain(int argc, _TCHAR* argv[]) { timer t; cout<<"max timespan:"<<t.elapsed_max()/3600<<"h"<<endl; cout<<"min timespan:"<<t.elapsed_min()<<"s"<<endl; //输出已经流逝的时间 cout<<"now time elapsed:"<<t.elapsed()<<"s"<<endl; return 0; }
2、progress_timer类
progress_timer类对timer类做了优化,在析构函数中自动输出流逝时间。
#include "stdafx.h" #include <boost/progress.hpp> using namespace boost; int _tmain(int argc, _TCHAR* argv[]) { //progress_timer析构时会自动输出流逝时间 { progress_timer t; //do something... int nSum = 0; for (int i = 1; i <= 1000; i++) { nSum += i; } } { progress_timer t; //do something... int nSum = 0; for (int i = 1; i <= 1000; i++) { nSum += i; } } return 0; }
#include "stdafx.h" #include <iostream> #include <boost/date_time/gregorian/gregorian.hpp> using namespace std; using namespace boost::gregorian; int _tmain(int argc, _TCHAR* argv[]) { date d1(2000,1,1); date d2(2008,8,8); //输出相差多少天 cout<<(d2-d1)<<endl; date d3(2012,6,30); //一周前日期 date d4 = d3 - days(7); cout<<to_iso_extended_string(d4)<<endl; //三个月前日期 date d5 = d3 - months(3); cout<<to_iso_extended_string(d5)<<endl; //一年前日期 date d6 = d3 - years(1); cout<<to_iso_extended_string(d6)<<endl; return 0; }
输出结果如下:
3142
2012-06-23
2012-03-31
2011-06-30