Espacios de nombres
Variantes

Archivo de encabezado de la biblioteca estándar <chrono>

De cppreference.com
 
 
Archivos de encabezado de la biblioteca estándar
 

Este archivo de encabezado es parte de la biblioteca de fecha y hora.

Clases

Definido en el espacio de nombres std::chrono
(C++11)
Un intervalo de tiempo.
(plantilla de clase) [editar]
Tiempo de pared a partir del reloj de tiempo real a lo largo del sistema.
(clase) [editar]
Reloj monotónico que nunca será ajustado.
(clase) [editar]
El reloj con mayor precisión disponible en el sistema.
(clase) [editar]
Un punto de tiempo.
(plantilla de clase) [editar]
Indica que una duración es convertible a una duración con un período de tic distinto.
(plantilla de clase)
Construye valores cero, mínimo y máximo de una cuenta de tics del tipo dado.
(plantilla de clase)
(C++20)
Representa una zona horaria.
(clase) [editar]
Excepción lanzada para reportar que una hora local no existe.
(clase) [editar]
Excepción lanzada para informar que una hora local es ambigua.
(clase) [editar]
Definiciones de tipo convenientes
Definido en el espacio de nombres std::chrono
std::chrono::nanoseconds Tipo de duración con período std::nano
std::chrono::microseconds Tipo de duración con período std::micro
std::chrono::milliseconds Tipo de duración con período std::milli
std::chrono::seconds Tipo de duración con período std::ratio<1>
std::chrono::minutes Tipo de duración con período std::ratio<60>
std::chrono::hours Tipo de duración con período std::ratio<3600>
std::chrono::days Tipo de duración con período std::ratio<86400>
std::chrono::weeks Tipo de duración con período std::ratio<604800>
std::chrono::months Tipo de duración con período std::ratio<2629746>
std::chrono::years Tipo de duración con período std::ratio<31556952>
Especializaciones
Definido en el espacio de nombres std
Especializa el rasgo std::common_type.
(especialización de plantilla de clase) [editar]
Especializa el rasgo std::common_type.
(especialización de plantilla de clase) [editar]

Funciones

Duración
Definido en el espacio de nombres std::chrono
Implementa operaciones aritméticas con duraciones como argumentos.
(plantilla de función) [editar]
(C++11)(C++11)(eliminado en C++20)(C++11)(C++11)(C++11)(C++11)(C++20)
Compara dos duraciones.
(plantilla de función) [editar]
Convierte una duración a otra, con un intervalo de tic diferente.
(plantilla de función) [editar]
Convierte una duración a otra, redondeando hacia abajo.
(plantilla de función) [editar]
Convierte una duración a otra, redondeando hacia arriba.
(plantilla de función) [editar]
Convierte una duración a otra, redondeando al más cercano, se empata con par.
(plantilla de función) [editar]
Obtiene el valor absoluto de la duración.
(plantilla de función) [editar]
Punto de tiempo
Definido en el espacio de nombres std::chrono
Realiza operaciones de suma y resta que involucran un punto de tiempo.
(plantilla de función) [editar]
Compara dos puntos de tiempo.
(plantilla de función) [editar]
Convierte un punto de tiempo a otro punto de tiempo en el mismo reloj, con una duración diferente.
(plantilla de función) [editar]
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]
Literales
Definido en el espacio de nombres std::literals::chrono_literals
Un literal std::chrono::duration que representa horas.
(función) [editar]
Un literal std::chrono::duration que representa minutos.
(función) [editar]
Un literal std::chrono::duration que representa segundos.
(función) [editar]
Un literal std::chrono::duration que representa milisegundos.
(función) [editar]
Un literal std::chrono::duration que representa microsegundos.
(función) [editar]
Un literal std::chrono::duration que representa nanosegundos.
(función) [editar]
Un literal std::chrono::day que representa un día de un mes.
(función) [editar]
Un literal std::chrono::year que representa un año en particular.
(función) [editar]

Sinopsis

namespace std {
  namespace chrono {
    // plantilla de clase duration
    template <class Rep, class Period = ratio<1>> class duration;
    // plantilla de clase time_point
    template <class Clock, class Duration = typename Clock::duration> class time_point;
  }
  // especializaciones de common_type
  template <class Rep1, class Period1, class Rep2, class Period2>
  struct common_type<chrono::duration<Rep1, Period1>,
                     chrono::duration<Rep2, Period2>>;
  template <class Clock, class Duration1, class Duration2>
  struct common_type<chrono::time_point<Clock, Duration1>,
                     chrono::time_point<Clock, Duration2>>;
  namespace chrono {
    // rasgos de personalización
    template <class Rep> struct treat_as_floating_point;
    template <class Rep> struct duration_values;
    template <class Rep>
    constexpr bool treat_as_floating_point_v = treat_as_floating_point<Rep>::value;
    // aritmética de duration
    template <class Rep1, class Period1, class Rep2, class Period2>
    common_type_t<duration<Rep1, Period1>, duration<Rep2, Period2>>
    constexpr operator+(const duration<Rep1, Period1>& lhs,
                        const duration<Rep2, Period2>& rhs);
    template <class Rep1, class Period1, class Rep2, class Period2>
    common_type_t<duration<Rep1, Period1>, duration<Rep2, Period2>>
    constexpr operator-(const duration<Rep1, Period1>& lhs,
                        const duration<Rep2, Period2>& rhs);
    template <class Rep1, class Period, class Rep2>
    duration<common_type_t<Rep1, Rep2>, Period>
    constexpr operator*(const duration<Rep1, Period>& d,
                        const Rep2& s);
    template <class Rep1, class Rep2, class Period>
    duration<common_type_t<Rep1, Rep2>, Period>
    constexpr operator*(const Rep1& s,
                        const duration<Rep2, Period>& d);
    template <class Rep1, class Period, class Rep2>
    duration<common_type_t<Rep1, Rep2>, Period>
    constexpr operator/(const duration<Rep1, Period>& d,
                        const Rep2& s);
    template <class Rep1, class Period1, class Rep2, class Period2>
    common_type_t<Rep1, Rep2>
    constexpr operator/(const duration<Rep1, Period1>& lhs,
                        const duration<Rep2, Period2>& rhs);
    template <class Rep1, class Period, class Rep2>
    duration<common_type_t<Rep1, Rep2>, Period>
    constexpr operator%(const duration<Rep1, Period>& d,
                        const Rep2& s);
    template <class Rep1, class Period1, class Rep2, class Period2>
    common_type_t<duration<Rep1, Period1>, duration<Rep2, Period2>>
    constexpr operator%(const duration<Rep1, Period1>& lhs,
                        const duration<Rep2, Period2>& rhs);
    // comparaciones de duration
    template <class Rep1, class Period1, class Rep2, class Period2>
    constexpr bool operator==(const duration<Rep1, Period1>& lhs,
                              const duration<Rep2, Period2>& rhs);
    template <class Rep1, class Period1, class Rep2, class Period2>
    constexpr bool operator!=(const duration<Rep1, Period1>& lhs,
                              const duration<Rep2, Period2>& rhs);
    template <class Rep1, class Period1, class Rep2, class Period2>
    constexpr bool operator< (const duration<Rep1, Period1>& lhs,
                              const duration<Rep2, Period2>& rhs);
    template <class Rep1, class Period1, class Rep2, class Period2>
    constexpr bool operator<=(const duration<Rep1, Period1>& lhs,
                              const duration<Rep2, Period2>& rhs);
    template <class Rep1, class Period1, class Rep2, class Period2>
    constexpr bool operator> (const duration<Rep1, Period1>& lhs,
                              const duration<Rep2, Period2>& rhs);
    template <class Rep1, class Period1, class Rep2, class Period2>
    constexpr bool operator>=(const duration<Rep1, Period1>& lhs,
                              const duration<Rep2, Period2>& rhs);
    // conversiones duration_cast
    template <class ToDuration, class Rep, class Period>
    constexpr ToDuration duration_cast(const duration<Rep, Period>& d);
    template <class ToDuration, class Rep, class Period>
    constexpr ToDuration floor(const duration<Rep, Period>& d);
    template <class ToDuration, class Rep, class Period>
    constexpr ToDuration ceil(const duration<Rep, Period>& d);
    template <class ToDuration, class Rep, class Period>
    constexpr ToDuration round(const duration<Rep, Period>& d);
    // definiciones de tipo convenientes
    using nanoseconds = duration</*entero con signo de al menos 64 bits*/ , nano>;
    using microseconds = duration</*entero con signo de al menos 55 bits*/ , micro>;
    using milliseconds = duration</*entero con signo de al menos 45 bits*/ , milli>;
    using seconds = duration</*entero con signo de al menos 35 bits*/ >;
    using minutes = duration</*entero con signo de al menos 29 bits*/ , ratio< 60>>;
    using hours = duration</*entero con signo de al menos 23 bits*/ , ratio<3600>>;
    // aritmética de time_point
    template <class Clock, class Duration1, class Rep2, class Period2>
    constexpr time_point<Clock, common_type_t<Duration1, duration<Rep2, Period2>>>
    operator+(const time_point<Clock, Duration1>& lhs,
              const duration<Rep2, Period2>& rhs);
    template <class Rep1, class Period1, class Clock, class Duration2>
    constexpr time_point<Clock, common_type_t<duration<Rep1, Period1>, Duration2>>
    operator+(const duration<Rep1, Period1>& lhs,
              const time_point<Clock, Duration2>& rhs);
    template <class Clock, class Duration1, class Rep2, class Period2>
    constexpr time_point<Clock, common_type_t<Duration1, duration<Rep2, Period2>>>
    operator-(const time_point<Clock, Duration1>& lhs,
              const duration<Rep2, Period2>& rhs);
    template <class Clock, class Duration1, class Duration2>
    constexpr common_type_t<Duration1, Duration2>
    operator-(const time_point<Clock, Duration1>& lhs,
              const time_point<Clock, Duration2>& rhs);
    // comparaciones de time_point
    template <class Clock, class Duration1, class Duration2>
    constexpr bool operator==(const time_point<Clock, Duration1>& lhs,
                              const time_point<Clock, Duration2>& rhs);
    template <class Clock, class Duration1, class Duration2>
    constexpr bool operator!=(const time_point<Clock, Duration1>& lhs,
                              const time_point<Clock, Duration2>& rhs);
    template <class Clock, class Duration1, class Duration2>
    constexpr bool operator< (const time_point<Clock, Duration1>& lhs,
                              const time_point<Clock, Duration2>& rhs);
    template <class Clock, class Duration1, class Duration2>
    constexpr bool operator<=(const time_point<Clock, Duration1>& lhs,
                              const time_point<Clock, Duration2>& rhs);
    template <class Clock, class Duration1, class Duration2>
    constexpr bool operator> (const time_point<Clock, Duration1>& lhs,
                              const time_point<Clock, Duration2>& rhs);
    template <class Clock, class Duration1, class Duration2>
    constexpr bool operator>=(const time_point<Clock, Duration1>& lhs,
                              const time_point<Clock, Duration2>& rhs);
    // time_point_cast
    template <class ToDuration, class Clock, class Duration>
    constexpr time_point<Clock, ToDuration>
    time_point_cast(const time_point<Clock, Duration>& t);
    template <class ToDuration, class Clock, class Duration>
    constexpr time_point<Clock, ToDuration>
    floor(const time_point<Clock, Duration>& tp);
    template <class ToDuration, class Clock, class Duration>
    constexpr time_point<Clock, ToDuration>
    ceil(const time_point<Clock, Duration>& tp);
    template <class ToDuration, class Clock, class Duration>
    constexpr time_point<Clock, ToDuration>
    round(const time_point<Clock, Duration>& tp);
    // algoritmos especializados
    template <class Rep, class Period>
    constexpr duration<Rep, Period> abs(duration<Rep, Period> d);
    // relojes
    class system_clock;
    class steady_clock;
    class high_resolution_clock;
  }
  inline namespace literals {
    inline namespace chrono_literals {
      // sufijos para los literales de duration
      constexpr chrono::hours operator "" h(unsigned long long);
      constexpr chrono::duration</*no especificado*/,
                                 ratio<3600,1>> operator "" h(long double);
      constexpr chrono::minutes operator "" min(unsigned long long);
      constexpr chrono::duration</*no especificado*/,
                                 ratio<60,1>> operator "" min(long double);
      constexpr chrono::seconds operator "" s(unsigned long long);
      constexpr chrono::duration</*no especificado*/ > operator "" s(long double);
      constexpr chrono::milliseconds operator "" ms(unsigned long long);
      constexpr chrono::duration</*no especificado*/,
                                 milli> operator "" ms(long double);
      constexpr chrono::microseconds operator "" us(unsigned long long);
      constexpr chrono::duration</*no especificado*/,
                                 micro> operator "" us(long double);
      constexpr chrono::nanoseconds operator "" ns(unsigned long long);
      constexpr chrono::duration</*no especificado*/, 
                                 nano> operator "" ns(long double);
      constexpr chrono::day  operator""d(unsigned long long d) noexcept;
      constexpr chrono::year operator""y(unsigned long long y) noexcept;
    }
  }
  namespace chrono {
    using namespace literals::chrono_literals;
  }

std::chrono::treat_as_floating_point

template <class Rep> struct treat_as_floating_point : is_floating_point<Rep> { };

std::chrono::duration_values

template <class Rep>
struct duration_values {
public:
  static constexpr Rep zero();
  static constexpr Rep min();
  static constexpr Rep max();
};

std::chrono::duration

template <class Rep, class Period = ratio<1>>
class duration {
public:
  using rep = Rep;
  using period = Period;
private:
  rep rep_; // solo exposición
public:
  // construcción/copia/destrucción
  constexpr duration() = default;
  template <class Rep2>
  constexpr explicit duration(const Rep2& r);
  template <class Rep2, class Period2>
  constexpr duration(const duration<Rep2, Period2>& d);
  ~duration() = default;
  duration(const duration&) = default;
  duration& operator=(const duration&) = default;
  // observador
  constexpr rep count() const;
  // aritmética
  constexpr duration operator+() const;
  constexpr duration operator-() const;
  constexpr duration& operator++();
  constexpr duration operator++(int);
  constexpr duration& operator--();
  constexpr duration operator--(int);
  constexpr duration& operator+=(const duration& d);
  constexpr duration& operator-=(const duration& d);
  constexpr duration& operator*=(const rep& rhs);
  constexpr duration& operator/=(const rep& rhs);
  constexpr duration& operator%=(const rep& rhs);
  constexpr duration& operator%=(const duration& rhs);
  // valores especiales
  static constexpr duration zero();
  static constexpr duration min();
  static constexpr duration max();
};

std::chrono::time_point

template <class Clock, class Duration = typename Clock::duration>
class time_point {
public:
  using clock = Clock;
  using duration = Duration;
  using rep = typename duration::rep;
  using period = typename duration::period;
private:
  duration d_; // solo exposición
public:
  // construcción
  constexpr time_point(); // has value epoch
  constexpr explicit time_point(const duration& d); // lo mismo que time_point() + d
  template <class Duration2>
  constexpr time_point(const time_point<clock, Duration2>& t);
  // observador
  constexpr duration time_since_epoch() const;
  // aritmética
  constexpr time_point& operator+=(const duration& d);
  constexpr time_point& operator-=(const duration& d);
  // valores especiales
  static constexpr time_point min();
  static constexpr time_point max();
};

std::chrono::system_clock

class system_clock {
public:
  using rep = /*véase descripción*/ ;
  using period = ratio</*no especificado*/, /*no especificado*/ >;
  using duration = chrono::duration<rep, period>;
  using time_point = chrono::time_point<system_clock>;
  static constexpr bool is_steady = /*no especificado*/ ;
  static time_point now() noexcept;
  // Relacionar con la API de C
  static time_t to_time_t (const time_point& t) noexcept;
  static time_point from_time_t(time_t t) noexcept;
};

std::chrono::steady_clock

class steady_clock {
public:
  using rep = /*no especificado*/ ;
  using period = ratio</*no especificado*/, /*no especificado*/ >;
  using duration = chrono::duration<rep, period>;
  using time_point = chrono::time_point</*no especificado*/, duration>;
  static constexpr bool is_steady = true;
  static time_point now() noexcept;
};

std::chrono::high_resolution_clock

class high_resolution_clock {
public:
  using rep = /*no especificado*/ ;
  using period = ratio</*no especificado*/, /*no especificado*/ >;
  using duration = chrono::duration<rep, period>;
  using time_point = chrono::time_point</*no especificado*/, duration>;
  static constexpr bool is_steady = /*no especificado*/ ;
  static time_point now() noexcept;
};