Как преобразовать std::chrono::time_point в секунды с начала эпохи

Если у вас есть std::chrono::time_point, такой как

example.cpp
std::chrono::time_point<std::chrono::system_clock> timepoint = std::chrono::system_clock::now();

Вы можете преобразовать его в секунды с начала эпохи, сначала приведя его к chrono::duration с помощью

example.cpp
timepoint.time_since_epoch(); // Returns a duration

а затем используя std::chrono::duration_cast<std::chrono::seconds>(...).count() для преобразования его в секунды с начала эпохи и получения количества интервалов (= секунд) между эпохой и временной точкой.

example.cpp
std::chrono::duration_cast<std::chrono::seconds>(timepoint.time_since_epoch()).count()

Полный пример:

main.cpp
#include <chrono>
#include <iostream>

int main()
{
    auto timepoint = std::chrono::system_clock::now();
    std::cout << "Seconds since epoch: " <<
        std::chrono::duration_cast<std::chrono::seconds>(timepoint.time_since_epoch()).count() << std::endl;
}

Это выведет, например:

output.txt
Seconds since epoch: 1690755234

Check out similar posts by category: C/C++