Espacios de nombres
Variantes
Acciones

std::chrono::time_point_cast

De cppreference.com
< cpp‎ | chrono‎ | time point
 
 
Biblioteca de servicios
 
 
 
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.

Contenido

[editar] Parámetros

t - time_point a convertir.

[editar] Valor de retorno

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

[editar] 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

[editar] 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]