Приведение между часами в C++
Один и тот же абсолютный момент на другие часы переводит clock_cast.
Эпохи std::chrono::system_clock и
std::chrono::utc_clock различаются,
поэтому простое копирование счетчика
неверно. Возьмем текущий системный момент,
перенесем на UTC-часы и выведем секунды
с UTC-эпохи:
#include <chrono>
#include <iostream>
auto sys = std::chrono::system_clock::now();
auto utc = std::chrono::clock_cast<std::chrono::utc_clock>(sys);
auto sec = std::chrono::time_point_cast<std::chrono::seconds>(utc);
std::cout << sec.time_since_epoch().count() << "\n";
После приведения к секундам в поток идет только целый счетчик UTC-эпохи без календарного разбора.
Сохраните std::chrono::system_clock::now
в auto sys_stamp. Получите
std::chrono::utc_clock через
std::chrono::clock_cast, сузьте до
std::chrono::seconds и выведите
счетчик эпохи.