timespec_get

来自cppreference.com
< c‎ | chrono
在标头 <time.h> 定义
int timespec_get( struct timespec *ts, int base );
(1) (C11 起)
#define TIME_UTC /* implementation-defined */
(2) (C11 起)
1) 修改 ts 所指向的 struct timespec 对象,以保有以时间基底 base 表示的当前日历时间。
2) 展开成适用作 timespec_getbase 参数的值。

实现可以提供其他以 TIME_ 为首的宏常量,以指示时间基底。

base 等于 TIME_UTC ,则

  • ts->tv_sec 为实现定义的纪元后的秒数,截断到整数值。
  • ts->tv_nsec 成员为纳秒数的整数值,按照系统时钟的解析度舍入。

参数

ts - 指向 struct timespec 类型对象的指针
base - TIME_UTC 或其他任何指示时间基底的非零整数值

返回值

成功是返回base的值,否则返回零。

注解

POSIX 函数 clock_gettime(CLOCK_REALTIME, ts) 亦可用于将从纪元开始的时间传达给 struct timespec

示例

#include <stdio.h>
#include <time.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("Current time: %s.%09ld UTC\n", buff, ts.tv_nsec);
}

输出:

Current time: 02/18/15 14:34:03.048508855 UTC

引用

  • C17 标准(ISO/IEC 9899:2018):
  • 7.27.2.5 The timespec_get function (第 286 页)
  • C11 标准(ISO/IEC 9899:2011):
  • 7.27.2.5 The timespec_get function (第 390 页)

参阅

单位为秒和纳秒的时间
(结构体)
返回基于给定时间基底的日历时间的解析度
(函数)
返回纪元开始经过的当前系统日历时间
(函数)