c++11提供了日期時間相關的庫 chrono,通過chrono庫可以很方便的處理日期和時間。
1. 記錄時間長度的duration
template>class duration;
//第乙個模板引數rep是乙個數值型別,表示時鐘數的型別;第二個模板引數是乙個預設模板引數 std::ratio,表示時鐘週期。
templateclass ratio;
//ratio表示分子除以分母得到的分數值,單位為秒。如 ratio<2> 表示乙個時鐘週期為2秒,ratio<1,1000> 表示乙個時鐘週期為1/1000秒。如有:
typedef duration > hours;
typedef duration> seconds;
typedef duration> microseconds;
通過定義這些常用的時間間隔型別,可以很方便的使用它們,比如執行緒的休眠:
std::this_thread::sleep_for(std::chrono::seconds(3));
std::this_thread::sleep_for(std::chrono::microseconds(3));
duration可以進行運算,如計算兩個之差:
std::chrono::minutes t1(10);std::chrono::seconds t2(60);
std::chrono::seconds t3 = t1 - t2; //只能為 minute向seconds,milliseconds轉換,不能反過來
std::cout << t3.count() << " seconds" << std::endl;
chrono::duration> d1(3);std::chrono::duration> d2(1);
auto d3 = d1 - d2;
cout << typeid(d3).name() << endl;
cout << d3.count() << endl;
//得到的d3的 typeid(t3).name()為 std::chrono::duration>;
duration可以進行不同時鐘週期的轉換,通過 duration_cast來實現:
std::chrono::minutes t1(10);std::chrono::seconds t2(60);
std::chrono::milliseconds t3 = t1 -t2;
std::cout << t3.count() << " milliseconds" << std::endl;
std::cout << std::chrono::duration_cast(t3).count() << " minutes" << std::endl;
//將秒的時鐘週期轉換為分鐘的時鐘週期,然後通過count得到轉換後的分鐘時鐘週期的時間間隔
2. 表示時間點的time point
using namespace std::chrono;using days_type = duration < int, std::ratio<60 * 60 * 24> > ;
time_pointtoday =
time_point_cast(system_clock::now());
std::cout << today.time_since_epoch().count() << " days since epoch" << endl;
time_point還支援一些算術運算,比如兩個 time_point 的差值時鐘週期數,還可以和duration 相加減。要注意不同的clock的time_point是不能進行算術運算的。
system_clock::time_point now = system_clock::now();std::time_t last = system_clock::to_time_t(now - hours(24));
std::time_t next = system_clock::to_time_t(now + hours(24));
std::cout << "one day ago, time was : " << std::asctime(std::localtime(&last)) << std::endl;
std::cout << "one day after, time is : " << std::asctime(std::localtime(&next)) << std::endl;
3. 獲取系統時鐘的clocks
std::time_t now_c = std::chrono::system_clock::to_time_t(now);std::chrono::time_pointtp = std::chrono::system_clock::from_time_t(now_c);
c 11之日期和時間庫
本文主要介紹 std chrono日期和時間用法。演示環境 vs2017 1 include 2 include 如果需要使用執行緒其表示一段時間,可以是這段時間單位可以是秒 分鐘 小時 微秒,可以在這裡看到詳情 突然抽風,上不去了 無法貼出相關定義原始碼了。乙個例子,執行緒休眠2秒 std thi...
Python3處理日期與時間
import time 獲取當前時間的時間戳 print time.time 獲取10位時間戳 print int time.time 獲取13位時間戳 示例 import time 時間戳 結構化時間元組 print time.localtime print time.localtime time...
c 11中的日期和時間庫
c 11提供了日期時間相關的庫chrono,通過chrono相關的庫我們可以很方便的處理日期和時間。c 11還提供了字串的寬窄轉換功能,也提供了字串和數字的相互轉換的庫。有了這些庫提供的便利的工具類,我們能方便的處理日期和時間相關的轉換和格式輸出。chrono庫主要包含了三種型別 時間間隔durat...