Namespaces
Variants

std:: timespec

From cppreference.net
< cpp ‎ | chrono ‎ | c
Definido en el encabezado <ctime>
struct timespec ;
(desde C++17)

Estructura que contiene un intervalo desglosado en segundos y nanosegundos.

Contenidos

Miembros de datos

Miembro Descripción
segundos completos, el valor es >= 0
(objeto miembro público)
long tv_nsec
nanosegundos, el valor está en el rango [ 0 , 999999999 ]
(objeto miembro público)

El orden de declaración de tv_sec y tv_nsec no está especificado. La implementación puede agregar otros miembros de datos a timespec .

Notas

El tipo de tv_nsec es long long en algunas plataformas, lo cual actualmente no es conforme en C++, pero está permitido en C desde C23.

Ejemplo

#include <ctime>
#include <iostream>
int main()
{
    std::timespec ts;
    std::timespec_get(&ts, TIME_UTC);
    char buff[0x80];
    std::strftime(buff, sizeof buff, "%D %T", std::gmtime(&ts.tv_sec));
//  auto [sec, nsec] = ts; // UB: structured bindings should not be used because the
                           // declaration order and data member list are unspecified
    std::cout << "Current time: " << buff << " (UTC)\n"
              << "Raw timespec.tv_sec: " << ts.tv_sec << '\n'
              << "Raw timespec.tv_nsec: " << ts.tv_nsec << '\n';
}

Salida posible:

Current time: 04/06/23 12:03:31 (UTC)
Raw timespec.tv_sec: 1680782611
Raw timespec.tv_nsec: 678437213

Véase también

devuelve el tiempo calendario en segundos y nanosegundos basado en una base de tiempo dada
(función)
tipo de tiempo calendario
(clase)
Documentación C para timespec