- chrono[meta header]
- std::chrono[meta namespace]
- class template[meta id-type]
- cpp11[meta cpp]
namespace std {
namespace chrono {
template <class Rep, class Period = ratio<1>>
class duration;
}}
- ratio[link /reference/ratio.md]
duration
は、2つの時間の間隔を表現するための型である。
duration
のテンプレートパラメータであるratio
の値によって、時間のためのあらゆる単位(ナノ秒、ミリ秒、秒, etc...)を表現することができる。
標準では、以下の別名が提供される:
名前 |
説明 |
対応バージョン |
(constructor) |
コンストラクタ |
C++11 |
~duration() = default; |
デストラクタ |
C++11 |
operator=(const duration&) = default; |
代入演算子 |
C++11 |
名前 |
説明 |
対応バージョン |
count |
値を取得する |
C++11 |
名前 |
説明 |
対応バージョン |
zero |
初期値を取得 |
C++11 |
min |
最小値を取得 |
C++11 |
max |
最大値を取得 |
C++11 |
名前 |
説明 |
対応バージョン |
rep |
値の数値型 Rep |
C++11 |
period |
値の周期を表す型 Period |
C++11 |
名前 |
説明 |
対応バージョン |
abs |
絶対値を求める |
C++17 |
名前 |
説明 |
対応バージョン |
ns |
ナノ秒リテラル |
C++14 |
us |
マイクロ秒リテラル |
C++14 |
ms |
ミリ秒リテラル |
C++14 |
s |
秒リテラル |
C++14 |
min |
分リテラル |
C++14 |
h |
時リテラル |
C++14 |
名前 |
説明 |
対応バージョン |
template <class T> struct hash; |
hash クラスの先行宣言 |
C++26 |
template<class Rep, class Period> struct hash<chrono::duration<Rep, Period>>; |
hash クラスのduration に対する特殊化。hash<Rep> が有効な場合のみ有効 |
C++26 |
#include <iostream>
#include <chrono>
#include <ctime>
using std::chrono::system_clock;
using std::chrono::seconds;
void print(const system_clock::time_point& p)
{
std::time_t t = system_clock::to_time_t(p);
char buf[26]; // 最低26バイトが必要
# ifdef _MSC_VER
// Visual Studioではctime_s()が推奨されている。
ctime_s(buf, 26, &t);
# else
// ctime()のリエントラント版
ctime_r(&t, buf);
# endif
// 出力された文字列には改行が含まれていることに注意
std::cout << buf;
}
int main()
{
// 現在日時を取得
system_clock::time_point now = system_clock::now();
// 3秒後の日時を取得
system_clock::time_point p = now + seconds(3);
print(now);
print(p);
}
- system_clock[link system_clock.md]
- to_time_t[link system_clock/to_time_t.md]
- now()[link system_clock/now.md]
- std::time_t[link /reference/ctime/time_t.md]
Tue Oct 16 16:25:08 2012
Tue Oct 16 16:25:11 2012
- GCC: 4.7.0 [mark verified]
- Visual C++: 2012 [mark verified], 2013 [mark verified], 2015 [mark verified]