chrono since C++11
库的参考手册(英文)| cppreference
chrono
库定义了三种(直到c++ 20)五种(从c++ 20开始)主要类型以及实用函数和常用类型:
- cokcks
- time points
- durations
- calendar dates (since C++20)
- time zone information (since C++20)
clocks
时钟由起点(或历元)和滴答率组成。例如,时钟的历元可能是1970年1月1日,并且每秒钟滴答一次。c++定义了几种时钟类型:
定义在 |
|
---|---|
system_clock | 挂钟时间来自系统的实时时钟 |
steady_clock | 永远不会被调整的匀速时钟 |
... 更多时钟类型见: | https://en.cppreference.com/w/cpp/chrono |
epoch
unix时间戳(Unix timestamp)
UNIX时间戳:Unix时间戳(英文为Unix time, POSIX time 或 Unix timestamp)是从 Epoch(1970年1月1日00:00:00 UTC)开始所经过的秒数,不考虑闰秒。
一个小时表示为UNIX时间戳格式为:3600秒;一天表示为UNIX时间戳为86400秒,闰秒不计算。
参考网址:
chrono since C++11
库的参考手册(英文)| cppreference
time points
时间点(time point)是从某个特定时钟的历元开始的一段时间。
定义在 |
---|
time_point |
#include <iostream>
#include <chrono>
int main(int argc, char *argv[])
{
auto start = std::chrono::system_clock::now();
std::cout << start << std::endl;
std::cout << start.time_since_epoch() << std::endl;
std::cout
<< std::chrono::duration_cast<std::chrono::seconds>(start.time_since_epoch())
<< std::endl;
std::cout
<< std::chrono::duration_cast<std::chrono::minutes>(start.time_since_epoch())
<< std::endl;
return 0;
}
输出:
2024-11-17 13:33:22.246335500
1731850402246335500ns
1731850402s
28864173min
duration
持续时间(duration)由一段时间组成,定义为某个时间单位的滴答数。例如,“42秒”可以用一个持续时间表示,该持续时间由1秒时间单位的42个节拍组成。
Type | Definition |
std::chrono::nanoseconds
|
std::chrono::duration</* int64 */, std::nano> |
std::chrono::microseconds
|
std::chrono::duration</* int55 */, std::micro> |
std::chrono::milliseconds
|
std::chrono::duration</* int45 */, std::milli> |
std::chrono::seconds
|
std::chrono::duration</* int35 */> |
std::chrono::minutes
|
std::chrono::duration</* int29 */, std::ratio<60>> |
std::chrono::hours
|
std::chrono::duration</* int23 */, std::ratio<3600>> |
std::chrono::days (since C++20)
|
std::chrono::duration</* int25 */, std::ratio<86400>> |
std::chrono::weeks (since C++20)
|
std::chrono::duration</* int22 */, std::ratio<604800>> |
std::chrono::months (since C++20)
|
std::chrono::duration</* int20 */, std::ratio<2629746>> |
std::chrono::years (since C++20)
|
std::chrono::duration</* int17 */, std::ratio<31556952>> |