Namespaces
Variants

timespec_get

From cppreference.net
ヘッダーで定義 <time.h>
int timespec_get ( struct timespec * ts, int base ) ;
(1) (C11以降)
#define TIME_UTC /* implementation-defined */
(2) (C11以降)
1) ts が指す timespec オブジェクトを、現在のカレンダー時刻を時間ベース base で保持するように変更する。
2) timespec_get 関数の base 引数として使用するのに適した値に展開されます

TIME_ で始まる他のマクロ定数は、追加の時間ベースを示すために実装によって提供される場合があります

base TIME_UTC の場合、

  • ts - > tv_sec は、実装定義のエポックからの秒数(整数値に切り捨て)に設定される
  • ts - > tv_nsec メンバは、システムクロックの分解能に丸められたナノ秒単位の整数値に設定される

目次

パラメータ

ts - struct timespec 型のオブジェクトへのポインタ
base - TIME_UTC または時間ベースを示す他の非ゼロ整数値

戻り値

成功した場合は base の値、それ以外の場合はゼロ。

注記

POSIX関数 clock_gettime(CLOCK_REALTIME, ts) は、エポックからの経過時間で 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

参考文献

  • C23規格 (ISO/IEC 9899:2024):
  • 7.27.2.5 timespec_get関数 (p: TBD)
  • C17規格 (ISO/IEC 9899:2018):
  • 7.27.2.5 timespec_get関数 (p: 286)
  • C11規格 (ISO/IEC 9899:2011):
  • 7.27.2.5 timespec_get関数 (p: 390)

関連項目

秒とナノ秒での時間
(構造体)
指定された時間ベースに基づく暦時間の解像度を返す
(関数)
エポックからの経過時間としてシステムの現在の暦時間を返す
(関数)
C++ documentation for timespec_get