|
|
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Defined in header <ctime> | ||
struct timespec; | (since C++17) | |
Structure holding an interval broken down into seconds and nanoseconds.
Contents |
| Member | Description |
std::time_t tv_sec | whole seconds, the value is >=0 (public member object) |
long tv_nsec | nanoseconds, the value is in range[0, 999999999](public member object) |
The declaration order oftv_sec andtv_nsec is unspecified. Implementation may add other data members totimespec.
The type oftv_nsec islonglong on some platforms, which is currently non-conforming in C++, but is allowed in C since 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: 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: 1680782611Raw timespec.tv_nsec: 678437213
(C++17) | returns the calendar time in seconds and nanoseconds based on a given time base (function)[edit] |
| calendar time type (class)[edit] | |
C documentation fortimespec | |