Локальное время в C++
Момент std::chrono::system_clock с поясом
процесса связывает zoned_time: пояс
возвращает std::chrono::current_zone.
Локальное представление берут через
get_local_time у готового
zoned_time: это тот же абсолютный
момент, но в шкале пояса пользователя.
Запишем связку и выведем секунды с эпохи
локального момента:
#include <chrono>
#include <iostream>
auto now = std::chrono::system_clock::now();
std::chrono::zoned_time zone_now{
std::chrono::current_zone(), now};
auto local = zone_now.get_local_time();
auto sec = std::chrono::time_point_cast<std::chrono::seconds>(local);
std::cout << sec.time_since_epoch().count() << "\n";
Число в потоке - счетчик секунд локальной шкалы; для работы поясов среде может понадобиться база IANA, но сами вызовы остаются такими в C++20.
Постройте std::chrono::zoned_time
из std::chrono::current_zone и
std::chrono::system_clock::now.
Возьмите get_local_time, приведите
к std::chrono::seconds и выведите
time_since_epoch.count.