1.timer類:
#include "stdafx.h"
#include
#include
using namespace std;
using namespace boost;
int _tmain(int argc, _tchar* argv)
2.boost::progress_timer t類
自動列印輸出流逝的時間
#include
int _tmain(int argc, _tchar* argv)
3.new_progress_timer 繼承boost::progress_timer的自定義類,可自定義精度
#include "stdafx.h"
#include
#include
#include
#include
using namespace std;
template
class new_progress_timer:public boost::timer
~new_progress_timer(void)
catch(...){}}
private:
std::ostream & m_os;
};int _tmain(int argc, _tchar* argv)
return 0;
}4.progress_display類:可以在控制台上顯示程式的執行進度
#include
#include
#include
#include
using namespace std;
int _tmain(int argc, _tchar* argv)
return 0;
}5.date類 表示年月日的日期類 以天為單位表示時間點概念
簡單構造
#include
using namespace boost;
using namespace boost::gregorian;
date d1; //乙個無效的日期
date d2(2010,1,1);//使用數字構造日期
date d3(2010,jan,1);//也可以使用英文制定月份
date d4(d2); //date之初拷貝構造
assert(d1 == date(not_a_date_time));//not_a_date_time代表無效日期
assert(d2 == d4);//datetime支援比較操作
assert(d3< d4);
工廠函式構造date
from_string() 、from_undelimited_string、day_clock::local_day()、day_clock::universal_day()
呼叫示例:
date d1 =from_string("1999-12-31");
date d2(from_string("2005/1/1"));
date d3 = from_undelimited_string("20111118");
date d1 =from_string("1999-12-31");
date d2(from_string("2005/1/1"));
date d3 = from_undelimited_string("20111118");
date d4 = day_clock::local_day();//返回本地日期
date d5 = day_clock::universal_day();//返回utc日期
6.特殊日期
date d1(neg_infin); //負無限日期
date d2(pos_infin); //正無限日期
date d3(not_a_date_time);//無效日期
date d4(max_date_time);//最大可能日期 9999-12-31
date d5(min_date_time);//最小可能日期1400-01-01
7.訪問日期
date d(2010,4,1);
assert(d.year()==2010);//返回年
assert(d.month()==4);//返回月
assert(d.day()==1);//返回日
date::ymd_type ymd = d.year_month_day();//一次性獲得年月日資料
assert(d.day_of_week()==4);//返回date的星期數
assert(d.day_of_year() == 91);//返回date是當年的第幾天
assert(d.end_of_month() == date(2010,4,30));//返回當月最後一天的date物件
assert(date(2010,1,10).week_number() ==1);//返回date所在的週是當年的第幾周,範圍是0至53,如果年初的幾天位於去年的周那麼週數為53,即第0周
assert(date(pos_infin).is_infinity());//是否是乙個無限日期
assert(date(pos_infin).is_pos_infinity());//是否是乙個負無限日期
assert(date(neg_infin).is_neg_infinity());//是否是乙個正無限日期
assert(date(not_a_date_time).is_not_a_date());//是否是乙個正無限日期
assert(date(not_a_date_time).is_special());//是否是乙個無效日期
assert(!date(2010,10,1).is_special());//是否是任意乙個特殊日期
8.日期的輸出
to_******_string(date d);//轉換為yyyy-mmm-dd格式的字串,其中mmm為3字元的英文月份名
to_iso_string(date d);//轉換為yyyymmdd格式的數字字串
to_iso_extended_string(date d);//轉換為yyyy-mm-dd格式的數字字串
9.與tm結構的轉換
to_tm(date):date轉換到tm,tm的時分秒成員(tm_hour,tm_min,tm_sec)均置為0,夏令時標誌tm_isdst置為-1(表示未知).
date_from_tm(tm datetm): tm轉換到date。只使用年、月、日三個成員(tm_year,tm_mon,tm_mday),其他成員均被忽略。
示例:date d(2010,2,1);
tm t = to_tm(d);
assert(t.tm_hour ==0 && t.tm_min ==0);
assert(t.tm_year == 110 && t.tm_mday ==1);
date d2 = date_from_tm(t);
assert(d == d2);
10,日期長度(date_duration)
支援 + - / 運算,並支援(== 、!= 、<、<=等)運算
datetime庫為date_duration定義了常用的巨集:typedef:days
days示例:
days dd1(10),dd2(-100),dd3(225);
assert(dd1>dd2 && dd2assert(dd1 + dd2 == days(-90));
assert((dd2 +dd3).days() == 265);
assert(dd3/5 == days(51));
month、years、weeks示例
weeks w(3); //三個星期
assert(w.days() ==21);
months m(5);//5個月
years y(2);//2年
month m2 = y +m;//2年零5個月
assert(m2.number_of_months() == 29);
assert((y*2).number_of_years() ==4);
11.日期運算
Boost庫時間日期學習
學習內容見 boost程式庫完全開發指南 第2章 時間與日期 學習三個類的使用timer progress timer date。boost庫的配置可參照 開發環境 winxp vs2005 boost 1 49 0。以下所有示例程式均為控制台程式。1 timer類 timer類是乙個小型的計時器,...
boost 時間和日期
include boost posix time microsec clock universal time 格林威治時間 和上面的應該是精度不一樣 date tod boost gregorian day clock local day 當前日期 tod years 1 加1年.ptime p b...
boost 時間與日期
timer include using namespace boost progress timer p36 繼承自timer,析構時自動輸出時間 include using namespace boost 將progress timer的輸出轉移到時stringstream,轉換為其他字串 str...