timespec

来自cppreference.com
< c‎ | chrono
在标头 <time.h> 定义
struct timespec;
(C11 起)

保有时间间隔的结构体,将其拆分成秒数和纳秒数。

成员对象

time_t tv_sec 整秒数(合法值 >= 0)
/* 见后述 */ tv_nsec 纳秒数(合法值为 [0, 999999999] )

tv_nsec 的类型为 long

(C23 前)

tv_nsec 的类型为能表示 [0, 999999999] 中的整数的有符号整数类型。

(C23 起)

tv_sectv_nsec 的声明顺序未指定。实现可以添加其他成员到 struct timespec

注解

在一些平台上 tv_nsec 的类型为 long long ,这仅从 C23 起遵循标准。

示例

#include <stdio.h>
#include <time.h>
#include <stdint.h>
 
int main(void)
{
    struct timespec ts;
    timespec_get(&ts, TIME_UTC);
    char buff[100];
    strftime(buff, sizeof buff, "%D %T", gmtime(&ts.tv_sec));
    printf("当前时间: %s.%09ld UTC\n", buff, ts.tv_nsec);
    printf("原始 timespec.tv_sec: %jd\n", (intmax_t)ts.tv_sec);
    printf("原始 timespec.tv_nsec: %09ld\n", ts.tv_nsec);
}

可能的输出:

当前时间: 04/04/24 14:45:17.885909786 UTC
原始 timespec.tv_sec: 1712241917
原始 timespec.tv_nsec: 885909786

引用

  • C17 标准(ISO/IEC 9899:2018):
  • 7.27.1/3 Components of time (第 284 页)
  • C11 标准(ISO/IEC 9899:2011):
  • 7.27.1/3 Components of time (第 388 页)

参阅

返回基于给定时间基底的日历时间
(函数)
日历时间类型
(结构体)