namespace std {
namespace chrono {
template <class Clock, class Duration = typename Clock::duration>
class time_point;
}}
概要
time_point
は、時間軸上の一点を表現するクラスである。
エポックと呼ばれる、起点となる時間からの経過時間によって時間軸上の一点を表す。
エポックはテンプレートパラメータ Clock
によって定められ、異なる Clock
同士での演算はできない。
メンバ関数
構築/コピー/破棄
名前 | 説明 | 対応バージョン |
---|---|---|
(constructor) |
コンストラクタ | C++11 |
観測
名前 | 説明 | 対応バージョン |
---|---|---|
time_since_epoch |
エポックからの経過時間を取得する | C++11 |
算術演算
名前 | 説明 | 対応バージョン |
---|---|---|
operator+= |
時間を進める | C++11 |
operator-= |
時間を戻す | C++11 |
特別な値
名前 | 説明 | 対応バージョン |
---|---|---|
min |
最小値 | C++11 |
max |
最大値 | C++11 |
メンバ型
名前 | 説明 | 対応バージョン |
---|---|---|
clock |
時計型 Clock |
C++11 |
duration |
時間間隔の型 Duration |
C++11 |
rep |
時間間隔の数値型 Duration::rep |
C++11 |
period |
時間の周期を表す型 Duration::period |
C++11 |
非メンバ関数
丸め演算
名前 | 説明 | 対応バージョン |
---|---|---|
time_point_cast |
ゼロ方向への丸め | C++11 |
floor |
負の無限大方向への丸め | C++17 |
ceil |
正の無限大方向への丸め | C++17 |
round |
偶数方向への丸め | C++17 |
算術演算
名前 | 説明 | 対応バージョン |
---|---|---|
operator+ |
加算 | C++11 |
operator- |
減算 | C++11 |
比較演算
名前 | 説明 | 対応バージョン |
---|---|---|
operator== |
等値比較を行う | C++11 |
operator!= |
非等値比較を行う | C++11 |
operator<=> |
三方比較を行う | C++20 |
operator< |
左辺が右辺より小さいか比較を行う | C++11 |
operator<= |
左辺が右辺以下かの比較を行う | C++11 |
operator> |
左辺が右辺より大きいか比較を行う | C++11 |
operator>= |
左辺が右辺以上かの比較を行う | C++11 |
共通型サポート
名前 | 説明 | 対応バージョン |
---|---|---|
common_type |
異なるtime_point 間の共通の型を求める |
C++11 |
ハッシュサポート
名前 | 説明 | 対応バージョン |
---|---|---|
template <class T> struct hash; |
hash クラスの先行宣言 |
C++26 |
template<class Clock, class Duration> struct hash<chrono::time_point<Clock, Duration>>; |
hash クラスのtime_point に対する特殊化。hash<Duration> が有効な場合のみ有効 |
C++26 |
例
#include <iostream>
#include <chrono>
#include <ctime>
#include <iomanip>
using std::chrono::system_clock;
int main() {
// 現在日時を取得
system_clock::time_point p = system_clock::now();
// 出力
std::time_t t = system_clock::to_time_t(p);
const std::tm* lt = std::localtime(&t);
std::cout << std::put_time(lt, "%c") << std::endl;
}
xxxxxxxxxx
#include <iostream>
#include <chrono>
#include <ctime>
#include <iomanip>
using std::chrono::system_clock;
int main() {
// 現在日時を取得
system_clock::time_point p = system_clock::now();
// 出力
std::time_t t = system_clock::to_time_t(p);
const std::tm* lt = std::localtime(&t);
std::cout << std::put_time(lt, "%c") << std::endl;
}
出力例
Thu Jul 18 13:46:26 2013
バージョン
言語
- C++11
処理系
- Clang: 3.0 ✅, 3.1 ✅, 3.2 ✅, 3.3 ✅
- Visual C++: 2012 ✅, 2013 ✅, 2015 ✅
参照
- P2592R3 Hashing support for
std::chrono
value classes- C++26でハッシュサポートが追加された