1. 概述
包含的標頭檔: #include <boost/date_time/posix_time/posix_time.hpp>
通常的命名空間: using namespace boost::posix_time;
2. 建構函式
跟date的建構函式一樣, 都基本建構函式, 字串構造, clock構造.
ptime還可以通過轉換函式構造.
void test_ptime_construct(){using namespace boost::gregorian;using namespace boost::posix_time;// 1. 常規的建構函式有如下幾種:ptime p0;// 最常用的構造方法ptime p1(date(2012, 11, 30), time_duration(1, 2, 3));// 2012-Nov-30 01:02:03ptime p2(p1);// 複製構造ptime ps1(neg_infin);ptime ps2(pos_infin);ptime ps3(not_a_date_time);ptime ps4(max_date_time);// 9999-Dec-31ptime ps5(min_date_time);// 1400-Jan-01// 2. 通過字串構造ptime pstr1(time_from_string("2012-11-30 23:59:59.000"));ptime pstr2(from_iso_string("20121130T200001"));// 3. 通過clock構造ptime pc1(second_clock::local_time());ptime pc2(second_clock::universal_time());ptime pc3(microsec_clock::local_time());ptime pc4(microsec_clock::universal_time());// 4. 通過轉換函式from_time_t和ptime_from_tm, // 注意: 這樣通過from_time_t轉換成ptime後, 好像是格林威治時間time_t t1 = time(NULL);ptime pc5 = from_time_t(t1);std::cout << pc5 << std::endl;tm* t2 = localtime(&t1);ptime pc6 = ptime_from_tm(*t2);std::cout << pc6 << std::endl;}
3. 常用函數
可以換取日期, 時間, 秒的小數部分
void test_ptime_accessor(){using namespace boost::posix_time;using namespace boost::gregorian;// 擷取日期部分ptime pt(second_clock::local_time());date d1 = pt.date();// 擷取時間部分time_duration td = pt.time_of_day();// 擷取秒的小數部分__int64 l = td.fractional_seconds();std::cout << l << std::endl;}
4. 轉換成字串
void test_ptime2string(){using namespace boost::posix_time;time_duration td1(1, 2, 3, 4);std::cout << to_simple_string(td1) << std::endl;std::cout << to_iso_string(td1) << std::endl;}