一、計時(shí)器
計時(shí)器,通常在一個(gè)項目中統計一個(gè)函數的執行時(shí)間是非常實(shí)用的。
#include <boost/timer.hpp>void PrintUserTime(){boost::timer t; //定義一個(gè)計時(shí)類(lèi),開(kāi)始計時(shí)std::cout << "可度量的最大時(shí)間:" << t.elapsed_max()/3600 << "h" << std::endl;std::cout << "可度量的最大時(shí)間:" << t.elapsed_min() << "s" << std::endl;std::cout << "使用時(shí)間為:" << t.elapsed() << std::endl;}
二、獲取當前日期
date d(day_clock::local_day());
三、將字符串轉換成日期
date fmtdt1 = from_string("2013-04-21");date fmtdt2 = date_from_iso_string("20140320");date fmtdt3 = from_us_string("1-25-2003")
四、日期轉換成字符串
to_iso_stringto_simple_string
五、日期長(cháng)度,以天為單位
date_duration dur = end - beg;cout << dur.days() << endl;
六、日期區間
接收兩個(gè)時(shí)間點(diǎn),用于判斷時(shí)間區間的交集、并集、間隔、區間平移等關(guān)于區間的操作
date_period p(beg, end);
七、日期運算
提供days、months、years三個(gè)時(shí)間類(lèi),可與日期類(lèi)進(jìn)行混合運算
months m(1);date end = d + m;
八、日期、日期與字符串轉換、日期加減運算
#include <boost/date_time/gregorian/gregorian.hpp>void PrintDate(){using namespace boost::gregorian;using namespace std;//獲取當前時(shí)間date d(day_clock::local_day());//日期類(lèi)支持IO流輸出cout << d << endl;//將日期轉換成字符串 20140320cout << to_iso_string(d) << endl;//將字符串中轉換成日期date fmtdt1 = from_string("2013-04-21");date fmtdt2 = from_string("2013/04/21");cout << fmtdt1 << " " << fmtdt2 << endl;//日期的運算,days day(1);months m(1);years y(1);date beg = d + day - y;date end = d + m;cout << (beg < end ? "Yes" : "No") << endl;//特別地, date - date = date_duration , 同時(shí)也支持date +/- date_duration//日期長(cháng)度date_duration dur = end - beg;cout << dur.days() << endl;//日期區間date_period p(beg, dur);cout << p << endl;}
九、時(shí)間、時(shí)間與字符串轉換、時(shí)間加減運算
和日期大同小異,也提供時(shí)間長(cháng)度:time_duration,時(shí)間區間:time_period,及時(shí)間操作類(lèi)hours、minutes、seconds、milliseconds、microseconds
#include <boost/date_time/posix_time/posix_time.hpp>void PrintTime(){using namespace boost::posix_time;using namespace std;using namespace boost::gregorian;//獲取本地時(shí)間ptime t1(second_clock::local_time());//獲取UTC時(shí)間ptime t2(second_clock::universal_time());cout << t1 << t2 << endl;//時(shí)間8:30time_duration dur(8,30,0);hours h(1);minutes m(1);seconds s(1);milliseconds mi(1); //毫秒microseconds mic(1); //微秒//nanoseconds na(1); //納秒 需要系統的支持ptime t3(date(2013,4,20));ptime t4(date(2013,4,20), dur);ptime t5(date(2013,4,20), mic);cout << to_simple_string(t3) <<" " << to_simple_string(t5) << endl;//時(shí)間的運算,與日期差不多,非常簡(jiǎn)單cout << t2 - t1 << endl;}
十、格式化時(shí)間
主要用來(lái)兩個(gè)類(lèi),輸入:date_input_facet, 輸出:date_facet
時(shí)間格式化類(lèi)為:time_input_facet time_facet boost::posix_time::time_facet *timeFmt = new boost::posix_time::time_facet("%Y-%m-%d %H:%M:%S");
#include <boost/date_time/gregorian/gregorian.hpp>void FormatDateTime(){using namespace boost::gregorian;using namespace std;//輸入date d;std::string teststring = "140320";boost::gregorian::date_input_facet *fmt = new boost::gregorian::date_input_facet("%y%m%d");std::stringstream ss1(teststring);ss1.imbue(locale(ss1.getloc(), fmt));ss1 >> d;cout << d << endl;//輸出boost::gregorian::date d2(2009, 1, 7);boost::gregorian::date_facet *fmt2 = new boost::gregorian::date_facet("%A, %d %B %Y");std::cout.imbue(std::locale(std::cout.getloc(), fmt2));std::cout << d2 << std::endl;//定制std::locale::global(std::locale("German"));std::string months[12] = { "Januar", "Februar", "M?rz", "April", "Mai", "Juni", "Juli", "August", "September", "Oktober", "November", "Dezember" };std::string weekdays[7] = { "Sonntag", "Montag", "Dienstag", "Mittwoch", "Donnerstag", "Freitag", "Samstag" };boost::gregorian::date d3(2009, 1, 7);boost::gregorian::date_facet *df = new boost::gregorian::date_facet("%A, %d. %B %Y");df->long_month_names(std::vector<std::string>(months, months + 12));df->long_weekday_names(std::vector<std::string>(weekdays, weekdays + 7));std::cout.imbue(std::locale(std::cout.getloc(), df));std::cout << d3 << std::endl;}
聯(lián)系客服