Espacios de nombres
Variantes

std::chrono::time_point_cast

De cppreference.com
 
 
Biblioteca de servicios
Apoyo del lenguaje
Apoyo de tipos (tipos básicos, RTTI)
Macros de prueba de característica de la biblioteca (C++20)
Servicios de programa
Funciones variádicas
Apoyo de corrutinas (C++20)
Apoyo de contratos (C++26)
Comparación de tres vías (C++20)
(C++20)
(C++20)(C++20)(C++20)  
(C++20)(C++20)(C++20)

 
 
 
Definido en el archivo de encabezado <chrono>
template <class ToDuration, class Clock, class Duration> std::chrono::time_point<Clock, ToDuration> time_point_cast(const std::chrono::time_point<Clock, Duration> &t);
(desde C++11)
(hasta C++14)
template <class ToDuration, class Clock, class Duration> constexpr std::chrono::time_point<Clock, ToDuration> time_point_cast(const std::chrono::time_point<Clock, Duration> &t);
(desde C++14)

Convierte un std::chrono::time_point de una duración a otra.

time_point_cast participa en la resolución de sobrecarga solo si ToDuration es una especialización de std::chrono::duration.

Parámetros

t - time_point a convertir.

Valor de retorno

std::chrono::time_point<Clock, ToDuration>( std::chrono::duration_cast<ToDuration>(t.time_since_epoch())).

Ejemplo

#include <iostream>
#include <chrono>
using namespace std::chrono_literals;

using Reloj = std::chrono::high_resolution_clock;
using Ms = std::chrono::milliseconds;
using Sec = std::chrono::seconds;

template<class Duracion>
using PuntoDeTiempo = std::chrono::time_point<Reloj, Duracion>;


inline void imprimir_ms(const PuntoDeTiempo<Ms>& punto_de_tiempo)
{
    std::cout << punto_de_tiempo.time_since_epoch().count() << " ms\n";
}

int main()
{
    PuntoDeTiempo<Sec> punto_de_tiempo_seg{4s};

    // conversión implícita, sin pérdida de precisión
    PuntoDeTiempo<Ms> punto_de_tiempo_ms{punto_de_tiempo_seg};
    imprimir_ms(punto_de_tiempo_ms); // 4000 ms

    punto_de_tiempo_ms = PuntoDeTiempo<Ms>{5756ms};
    imprimir_ms(punto_de_tiempo_ms); // 5756 ms

    // conversión explícita, necesaria cuando puede ocurrir una pérdida de precisión
    // 5756 truncado a 5000
    punto_de_tiempo_seg = std::chrono::time_point_cast<Sec>(punto_de_tiempo_ms);
    imprimir_ms(punto_de_tiempo_seg); // 5000 ms
}

Salida:

4000 ms
5756 ms
5000 ms

Véase también

Convierte un punto de tiempo a otro, redondeando hacia abajo (piso).
(plantilla de función) [editar]
Convierte un punto de tiempo a otro, redondeando hacia arriba (techo).
(plantilla de función) [editar]
Convierte un punto de tiempo a otro, redondeando al más cercano, se empata con par.
(plantilla de función) [editar]
Convierte una duración a otra, con un intervalo de tic diferente.
(plantilla de función) [editar]