Пространства имён
Варианты
Действия

std::timespec

Материал из cppreference.com
< cpp | chrono | c
 
 
Библиотека утилит
Языковая поддержка
Поддержка типов (базовые типы, RTTI)
Макросы тестирования функциональности библиотеки (C++20)    
Управление динамической памятью
Программные утилиты
Поддержка сопрограмм (C++20)
Вариативные функции
Трёхстороннее сравнение (C++20)
(C++20)
(C++20)(C++20)(C++20)(C++20)(C++20)(C++20)
Общие утилиты
Дата и время
Функциональные объекты
Библиотека форматирования (C++20)
(C++11)
Операторы отношения (устарело в C++20)
Целочисленные функции сравнения
(C++20)(C++20)(C++20)    
(C++20)
Операции обмена и типа
(C++14)
(C++11)
(C++11)
(C++11)
(C++17)
Общие лексические типы
(C++11)
(C++17)
(C++17)
(C++17)
(C++11)
(C++17)
(C++23)
Элементарные преобразования строк
(C++17)
(C++17)
 
 
Утилиты даты и времени в стиле C
Функции
Манипуляции временем
Преобразование форматов
Константы
Типы
(C++17)
 
<tbody> </tbody>
Определено в заголовочном файле <ctime>
struct timespec;
(начиная с C++17)

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

Объекты-элементы

std::time_t tv_sec целые секунды – >= 0
long tv_nsec наносекунды – [0999999999]

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

Примечание

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

Пример

#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: не следует использовать структурированные
                           // привязки, поскольку порядок объявления и
                           // список элементов данных не указаны

    std::cout << "Текущее время: " << buff << " (UTC)\n"
              << "Сырое timespec.time_t: " << ts.tv_sec << '\n'
              << "Сырое timespec.tv_nsec: " << ts.tv_nsec << '\n';
}

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

Текущее время: 04/06/23 12:03:31 (UTC)
Сырое timespec.time_t: 1680782611
Сырое timespec.tv_nsec: 678437213

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

возвращает календарное время в секундах и наносекундах на основе заданной временной базы
(функция) [править]
тип календарного времени
(класс) [править]