Difference between revisions of "cpp/chrono/c/timespec"
From cppreference.com
Andreas Krug (Talk | contribs) m ({{closed range}}, fmt) |
D41D8CD98F (Talk | contribs) m (→Notes) |
||
(One intermediate revision by one user not shown) | |||
Line 15: | Line 15: | ||
===Notes=== | ===Notes=== | ||
− | The type of {{tt|tv_nsec}} is {{c|long long}} on some platforms, which is currently non-conforming in C++, but is | + | The type of {{tt|tv_nsec}} is {{c|long long}} on some platforms, which is currently non-conforming in C++, but is allowed in C since C23. |
===Example=== | ===Example=== | ||
Line 34: | Line 34: | ||
std::cout << "Current time: " << buff << " (UTC)\n" | std::cout << "Current time: " << buff << " (UTC)\n" | ||
− | << "Raw timespec. | + | << "Raw timespec.tv_sec: " << ts.tv_sec << '\n' |
<< "Raw timespec.tv_nsec: " << ts.tv_nsec << '\n'; | << "Raw timespec.tv_nsec: " << ts.tv_nsec << '\n'; | ||
} | } | ||
Line 40: | Line 40: | ||
|output= | |output= | ||
Current time: 04/06/23 12:03:31 (UTC) | Current time: 04/06/23 12:03:31 (UTC) | ||
− | Raw timespec. | + | Raw timespec.tv_sec: 1680782611 |
Raw timespec.tv_nsec: 678437213 | Raw timespec.tv_nsec: 678437213 | ||
}} | }} |
Latest revision as of 06:49, 4 April 2024
Defined in header <ctime>
|
||
struct timespec; |
(since C++17) | |
Structure holding an interval broken down into seconds and nanoseconds.
Contents |
[edit] 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
.
[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) |
returns the calendar time in seconds and nanoseconds based on a given time base (function) |
calendar time type (class) | |
C documentation for timespec
|