Namespaces
Variants

std:: timespec

From cppreference.net
< cpp ‎ | chrono ‎ | c
定义于头文件 <ctime>
struct timespec ;
(C++17 起)

用于存储按秒和纳秒分解的时间间隔的结构体。

目录

数据成员

成员 描述
整秒数,其值 >= 0
(公开成员对象)
long tv_nsec
纳秒数,取值范围为 [ 0 , 999999999 ]
(公开成员对象)

tv_sec tv_nsec 的声明顺序未作规定。实现可能会向 timespec 添加其他数据成员。

注释

在某些平台上, tv_nsec 的类型为 long long ,这目前不符合 C++ 标准,但在 C 语言中自 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: 不应使用结构化绑定,因为
                           // 声明顺序和数据成员列表是未指定的
    std::cout << "当前时间: " << buff << " (UTC)\n"
              << "原始 timespec.tv_sec: " << ts.tv_sec << '\n'
              << "原始 timespec.tv_nsec: " << ts.tv_nsec << '\n';
}

可能的输出:

当前时间: 04/06/23 12:03:31 (UTC)
原始 timespec.tv_sec: 1680782611
原始 timespec.tv_nsec: 678437213

参见

基于给定时间基准返回以秒和纳秒表示的日历时间
(函数)
日历时间类型
(类)
C 文档 关于 timespec