1. 概述
標頭檔: <boost/date_time.hpp>
本庫採用格里曆日期系統, 支援從1400-Jan-01到9999-Dec-31.
類boost::gregorian::date是使用者使用的主要時間類型.
2. 建構函式
date_time中使用枚舉special_values定義了一些特殊的時間概念,包括:
pos_infin(正無限)
neg_infin(負無限)
not_a_date_time(無效時間)
min_date_time(最小日期或時間)
max_date_time(最大日期或者時間)
另外還提供了5個is_xxx函數,用於檢驗日期是否是特殊日期,
is_infinity(是否是一個無限日期)
is_neg_infinity(是否是一個負無限日期)
is_pos_infinity(是否是一個正無限日期)
is_not_adate(是否是一個無效日期)
is_special(是否是任意一個特殊日期)
3. 例子
void test_dt_construct(){using namespace boost::gregorian;// 1. 常規的建構函式有如下幾種:date d0;date d1(2008, 8, 9);// 最常用的構造方法date d2(d1);// 複製構造date ds1(neg_infin);date ds2(pos_infin);date ds3(not_a_date_time);date ds4(max_date_time);// 9999-Dec-31date ds5(min_date_time);// 1400-Jan-01assert(d0.is_not_a_date());assert(d0.is_special());assert(ds1.is_special());assert(ds2.is_special());assert(ds3.is_special());assert(!ds4.is_special());assert(!ds5.is_special());// 2. 通過字串構造date dstr1(from_string("2011/08/09"));date dstr2(from_string("2011-08-09"));date dstr3(from_string("2011-Feb-28"));date dstr4(from_string("2011-February-28"));date dstr5(from_undelimited_string("20110809"));// 不常用的字串date dstr6(from_us_string("Feb-28-2011"));// 完整的月份單詞也可以date dstr7(from_uk_string("28-Feb-2011"));// 完整的月份單詞也可以// 3. 通過clock構造date dc1(day_clock::local_day());date dc2(day_clock::universal_day());// 4. 構造時的異常try{// 年, 月, 日超過範圍時會拋異常.date d6(1300, 12, 25);}catch (std::exception& e){std::cout << e.what() << std::endl;}}