Wie man std::chrono::time_point in Mikrosekunden seit Epoche umwandelt

Wenn Sie einen std::chrono::time_point wie

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

haben, können Sie ihn in Mikrosekunden seit Epoche umwandeln, indem Sie ihn zuerst mit

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

in ein chrono::duration casten und dann std::chrono::duration_cast<std::chrono::milliseconds>(...).count() verwenden, um ihn in Mikrosekunden seit Epoche umzuwandeln und die Anzahl der Intervalle (= Mikrosekunden) zwischen Epoche und dem Zeitpunkt zu erhalten.

duration_cast_microseconds.cpp
std::chrono::duration_cast<std::chrono::microseconds>(timepoint.time_since_epoch()).count()

Vollständiges Beispiel:

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

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

Dies gibt beispielsweise aus:

chrono_microseconds_example_output.txt
Microseconds since epoch: 1690755479946000

Hier ist ein einfaches Snippet, um std::chrono::time_point in Mikrosekunden umzuwandeln:

timepoint_to_us.cpp
#include <chrono>
#include <cstdint>

int64_t to_microseconds_since_epoch(std::chrono::system_clock::time_point tp) {
    return std::chrono::duration_cast<std::chrono::microseconds>(tp.time_since_epoch()).count();
}

Verwendungsbeispiel:

timepoint_usage.cpp
auto now = std::chrono::system_clock::now();
int64_t us = to_microseconds_since_epoch(now);

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