std::timespec - cppreference.com (original) (raw)
| | | | | ---------------- | | ------------- | | struct timespec; | | (since C++17) |
Structure holding an interval broken down into seconds and nanoseconds.
[edit] Data members
Member | Description |
---|---|
whole seconds, the value is >= 0 (public member object) | |
nanoseconds, the value is in range [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
#include #include 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