Scroll to navigation

std::timespec(3) C++ Standard Libary std::timespec(3)

NAME

std::timespec - std::timespec

Synopsis


Defined in header <ctime>
struct timespec; (since C++17)


Structure holding an interval broken down into seconds and nanoseconds.

Member objects


std::time_t tv_sec whole seconds – >= 0
long tv_nsec nanoseconds – [0, 999999999]


The declaration order of tv_sec and tv_nsec is unspecified. Implementation may add
other data members to timespec.

Notes


The type of tv_nsec is long long on some platforms, which is currently
non-conforming in C++, but is allowed in C since C23.

Example

// Run this code


#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';
}

Possible output:


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

See also


timespec_get returns the calendar time in seconds and nanoseconds based on a given
(C++17) time base
(function)
tm calendar time type
(class)
C documentation for
timespec

2024.06.10 http://cppreference.com