もくじ
https://tera1707.com/entry/2022/02/06/144447
やりたいこと
以前の記事で、システム時刻の取得と、それをタイムゾーンに合わせて出力する方法を調べた。
今どきは、それをもっとかっこよくやれるらしい。試してみる。
前提
C++20を使用。
ためした
std::chrono
を使う。
#include <Windows.h> #include <iostream> #include <chrono> #include <format> // C++20以降でないと動きません int main() { while (true) { // 現在システム時刻(ミリ秒まで) auto nowWithMs = std::chrono::system_clock::now(); // 現在システム時刻(秒まで) auto nowWithoutMs = std::chrono::floor<std::chrono::seconds>(nowWithMs); // 現在システム時刻(ミリ秒まで&タイムゾーン考慮) std::chrono::zoned_time nowZoned { std::chrono::current_zone(), std::chrono::system_clock::now() }; // 現在システム時刻(ミリ秒まで&タイムゾーン考慮) std::chrono::zoned_time nowZonedAsia { std::chrono::locate_zone("Asia/Tokyo"), std::chrono::system_clock::now() }; // ----------------------------------------------------------------- std::cout << std::format("{:%Y/%m/%d %H:%M:%S%n}", nowWithoutMs); // 2024/09/12 13:02:38 std::cout << std::format("{:%Y/%m/%d %H:%M:%S%n}", nowWithMs); // 2024/09/12 13:02:38.2312928 std::cout << std::format("{:%Y/%m/%d %H:%M:%S%n}", nowZoned); // 2024/09/12 22:02:38.2595743 std::cout << std::format("{:%Y/%m/%d %H:%M:%S%n}", nowZonedAsia); // 2024/09/12 22:02:38.2595743 Sleep(1050); } }
参考
以前の記事
日付時刻とタイムゾーンの取得の仕方
https://qiita.com/tera1707/items/e3ee39a6bb0e7742381e
std::chrono
https://cpprefjp.github.io/reference/chrono.html
std::format
https://cpprefjp.github.io/reference/format/format.html
https://cpprefjp.github.io/reference/chrono/format.html
タイムゾーン考慮
https://www.techiedelight.com/ja/get-current-time-and-date-in-cpp/