namespace std::chrono {
template <class charT, class traits, class Duration, class TimeZonePtr>
basic_ostream<charT, traits>&
operator<<(basic_ostream<charT, traits>& os,
const zoned_time<Duration, TimeZonePtr>& t); // (1) C++20
}
概要
zoned_timeオブジェクトを出力ストリームに出力する。
この演算子は、zoned_timeクラスのコンストラクタで設定されたシステム時間もしくはローカル時間を、タイムゾーンを考慮した時間に変換して日時を出力する。
効果
t.get_local_time()で得られた、タイムゾーンを考慮したローカル時間を、"%F %T %Z"フォーマットでosに出力する。
"%F"は"%Y-%m-%d"(4桁ゼロ埋めの年-2桁ゼロ埋めの月-2桁ゼロ埋めの日) と等価"%T"は"%H:%M:%S"(2桁ゼロ埋めの時:2桁ゼロ埋めの分:2桁ゼロ埋めの秒と小数点以下の時間) と等価"%Z"はタイムゾーンの略称 (日本は"JST"、UTCは"UTC")
戻り値
return os;
例
#include <iostream>
#include <chrono>
namespace chrono = std::chrono;
int main()
{
auto now = chrono::system_clock::now();
// タイムゾーンなしで日時を出力する
// (ローカルタイムゾーンへの変換はしてくれないので、デフォルトではUTCタイムゾーンで出力される)
std::cout << now << std::endl;
// タイムゾーン付きで日時を出力する
std::cout << chrono::zoned_time{now} << std::endl; // デフォルトタイムゾーン (UTC)
std::cout << chrono::zoned_time{"Asia/Tokyo", now} << std::endl; // 日本 (UTC + 9時間)
std::cout << chrono::zoned_time{"UTC", now} << std::endl; // UTC
}
出力
2019-12-20 10:05:05
2019-12-20 10:05:05.330140 UTC
2019-12-20 19:05:05.330140 JST
2019-12-20 10:05:05.330140 UTC
バージョン
言語
- C++20
処理系
- Clang: 9.0 ❌
- GCC: 9.2 ❌
- Visual C++: 2019 Update 3 ❌
関連項目
- chronoの
std::format()(フォーマットの詳細)