Si tienes un std::chrono::time_point como
timepoint_example.cpp
std::chrono::time_point<std::chrono::system_clock> timepoint = std::chrono::system_clock::now();Puedes convertirlo a microsegundos desde epoch primero convirtiéndolo a un chrono::duration usando
timepoint_time_since_epoch.cpp
timepoint.time_since_epoch(); // Devuelve una duración
y luego usando std::chrono::duration_cast<std::chrono::milliseconds>(...).count() para convertirlo a microsegundos desde epoch y obtener el número de intervalos (= microsegundos) entre epoch y el time point.
duration_cast_microseconds.cpp
std::chrono::duration_cast<std::chrono::microseconds>(timepoint.time_since_epoch()).count()Ejemplo completo:
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;
}Esto imprime, por ejemplo:
chrono_microseconds_example_output.txt
Microseconds since epoch: 1690755479946000Aquí un fragmento simple para convertir std::chrono::time_point a microsegundos:
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();
}Ejemplo de uso:
timepoint_usage.cpp
auto now = std::chrono::system_clock::now();
int64_t us = to_microseconds_since_epoch(now);
Echa un vistazo a artículos similares por categoría:
C/C++
Si este artículo te ha ayudado, considera invitarme a un café o hacer una donación vía PayPal para apoyar la investigación y publicación de nuevos artículos en TechOverflow