home | help
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 a >= 0
	long tv_nsec	   nanoseconds a [0, 999999999]

	The  declaration order of tv_sec and tv_nsec is unspecified. Implementa-
     tion 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

http://cppreference.com 	   2024.06.10			std::timespec(3)

home | help