Namespaces
Variants

timespec

From cppreference.net
Определено в заголовочном файле <time.h>
struct timespec ;
(начиная с C11)

Структура, содержащая интервал, разбитый на секунды и наносекунды.

Содержание

Объекты-члены

Элемент Описание
time_t tv_sec целые секунды (допустимые значения >= 0 )
/* see below */ tv_nsec наносекунды (допустимые значения [ 0 , 999999999 ] )

Тип tv_nsec long .

(до C23)

Тип tv_nsec — это определяемый реализацией знаковый целочисленный тип, который может представлять целые числа в диапазоне [ 0 , 999999999 ] .

(начиная с C23)

Порядок объявления tv_sec и tv_nsec не определён. Реализация может добавлять другие члены в struct timespec .

Примечания

Тип tv_nsec является long long на некоторых платформах, что соответствует стандарту только начиная с C23.

Пример

#include <stdint.h>
#include <stdio.h>
#include <time.h>
int main(void)
{
    struct timespec ts;
    timespec_get(&ts, TIME_UTC);
    char buff[100];
    strftime(buff, sizeof buff, "%D %T", gmtime(&ts.tv_sec));
    printf("Current time: %s.%09ld UTC\n", buff, ts.tv_nsec);
    printf("Raw timespec.tv_sec: %jd\n", (intmax_t)ts.tv_sec);
    printf("Raw timespec.tv_nsec: %09ld\n", ts.tv_nsec);
}

Возможный вывод:

Current time: 04/04/24 14:45:17.885909786 UTC
Raw timespec.tv_sec: 1712241917
Raw timespec.tv_nsec: 885909786

Ссылки

  • Стандарт C23 (ISO/IEC 9899:2024):
  • 7.27.1/3 Компоненты времени (стр.: TBD)
  • Стандарт C17 (ISO/IEC 9899:2018):
  • 7.27.1/3 Компоненты времени (стр: 284)
  • Стандарт C11 (ISO/IEC 9899:2011):
  • 7.27.1/3 Компоненты времени (стр: 388)

Смотрите также

возвращает календарное время в секундах и наносекундах на основе заданной временной базы
(функция)
тип календарного времени
(структура)
C++ documentation для timespec