C++ 取得系統當前時間

本篇 ShengYu 將介紹如何使用 C++ 取得系統當前時間,
取得系統當前時間有幾種,本篇介紹使用 C++11 的 chrono 的寫法來取得系統當前時間。

範例1: 取得系統當下時間並轉成字串

使用時,需要先宣告引用 chrono

1
2
3
4
5
6
7
8
9
10
11
12
#include <chrono>
...
std::string getCurrentSystemTime() {
auto tt = std::chrono::system_clock::to_time_t(std::chrono::system_clock::now());
struct tm* ptm = localtime(&tt);
char date[60] = { 0 };
sprintf(date, "%d-%02d-%02d-%02d.%02d.%02d",
(int)ptm->tm_year + 1900, (int)ptm->tm_mon + 1, (int)ptm->tm_mday,
(int)ptm->tm_hour, (int)ptm->tm_min, (int)ptm->tm_sec);

return std::string(date);
}

完整範例下載

使用 g++ 編譯 g++ main.cpp -std=c++11
輸出結果如下:

1
2019-05-17-20.56.58

範例2: 取得從 epoch 到現在經過多少微秒 milliseconds

1
2
unsigned long milliseconds_since_epoch =
std::chrono::system_clock::now().time_since_epoch() / std::chrono::milliseconds(1);

或者

1
2
unsigned long milliseconds_since_epoch = 
std::chrono::duration_cast<std::chrono::milliseconds>(std::chrono::system_clock::now().time_since_epoch()).count();

參考
[1] c++ - Get time since epoch in milliseconds, preferably using C++11 chrono - Stack Overflow
https://stackoverflow.com/questions/16177295/get-time-since-epoch-in-milliseconds-preferably-using-c11-chrono

相關文章
C/C++ 新手入門教學懶人包
C++ 計算程式執行時間
std::deque 用法與範例
std::queue 用法與範例
std::vector 用法與範例
std::thread 怎麼實作的?
Python 取得系統當前時間