std::timespec
From cppreference.com
C++
Feature test macros (C++20)
Concepts library (C++20)
Metaprogramming library (C++11)
Ranges library (C++20)
Filesystem library (C++17)
Concurrency support library (C++11)
Execution control library (C++26)
Date and time library
(C++11)
(C++20)
(C++20)
(C++11)
(C++11)
(C++11)
(C++20)
(C++20)
(C++20)
(C++11)
(C++20)
(C++20)
(C++20)
(C++20)(C++20)
(C++20)(C++20)
(C++20)
(C++20)
(C++20)
(C++20)
(C++20)
(C++20)
(C++20)
(C++20)
(C++20)
(C++20)
(C++20)
(C++20)
(C++20)
(C++20)
(C++20)
(C++20)
(C++20)
(C++20)(C++20)
(C++20)
(C++20)
(C++20)
(C++20)(C++20)(C++20)(C++20)
(C++20)
(C++20)
(C++20)
(C++20)
(C++20)
(C++20)
(C++20)
(C++20)
(C++20)
(C++20)
(C++20)
(C++20)
(C++20)
(C++20)
Defined in header
<ctime>
struct timespec;
(since C++17)
Structure holding an interval broken down into seconds and nanoseconds.
Contents
[edit] Data members
Member
Description
long
tv_nsec
[
0,
999999999]
(public member object)
The declaration order of tv_sec
and tv_nsec
is unspecified. Implementation may add other data members to timespec
.
[edit] 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.
[edit] 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
[edit] See also
(C++17)
(function) [edit]
C documentation for timespec