Boost庫使用 date time類庫

2021-08-07 18:00:12 字數 1581 閱讀 7899

boost庫中使用了timer、date_time、chrono處理時間與日期的問題。在上層開發中,經常碰到不同時間體系的處理,如格里高利歷、utc等,date_time解決了大部分蕾絲的問題,是乙個較為全面、靈活的時間和日期類庫,並且可以與c的傳統時間結構tm相互轉換,提供底層支援。

date_time類庫簡單使用

date_time類庫名為libboost_date_time.a

類庫包含兩個部分,處理日期的gregorian和處理時間的posix_time,在使用時,分別要包含:

// 處理日期元件

#include

using

namespace boost::gregorian;

// 處理時間元件

#include

using

namespace boost::posix_time;

date_time類庫核心類時date類,使用32位整數作為內部儲存,時間節點為天;類定義原始碼可以在/include/boost/date_time中的date.hpp中找到。

建立日期物件

#include

using namespace boost::gregorian;

date d1; // 無效日期

date d2(2017, 9, 1); // 數字構造

date d3(2017, sep, 1); // 英文代表月份

date d4(d3); // 拷貝構造

// 通過工廠函式

d1 = from_string("20170901");

d1 = from_undelimited_string("20170901"); // 無分割字元

d1 = day_clock::local_day();// 獲得本地日期

d1 = day_clock::universal_day(); // 獲得utc日期

訪問與輸出日期

date類成員函式year()、month()、day()分別返回日期的年、月、日;ymd_type year_month_day() 可以一次性獲得年月日。輸出時一般需要轉換為字串型別,date類不支援直接輸出字串型別,需要使用轉換函式,如:

// 輸出日期

date boostdate = day_clock()::local_day();

// 轉換為yyyy-mmm-dd格式,其中mmm為英文月份

string str1 = to_******_string(boostdate);

// 轉換為yyyymmdd格式的數字字串

string str2 = to_iso_string(boostdate);

// 轉換為yyyy-mm-dd格式的數字字串

string str3 = to_iso_extended_string(boostdate);

同樣,該類相容底層資料結構,可以與c標準庫相互轉化:

to_tm(date);

date_from_tm(tm ***ate);

Boost庫使用總結

智慧型指標,與引用計數相關 auto ptr 主要為異常安全設計的,在程式正常退出或者異常終止,會呼叫類的析構函式,釋放資源。複製 賦值是損壞性的操作,所以不能繫結到陣列或者變數指標,也不能將auto ptr物件儲存在容器中。auto ptra new int 10 auto ptrb b.rese...

Boost庫的使用

fatal error c1083 無法開啟包括檔案 boost shared ptr.hpp no such file or directory它由c 標準委員會部分成員所設立的boost社群開發並維護,使用了許多現代c 程式設計技術,內容涵蓋字串處理 正規表示式 容器與資料結構 併發程式設計 函...

boost建立執行緒池 boost庫使用 執行緒類

boost 庫中提供了兩種建立執行緒的方式,一種是單個執行緒建立,另外一種是執行緒組的建立,進行執行緒管理 thread 就是沒有組管理,與我們在linux下使用pthread create 函式是一樣的,只是在c 11中,引入了boost中的thread方法 包含標頭檔案 include usin...