gettimeofday()、gettimeofday64() - 日時の取得

標準

標準/拡張機能 C/C++ 依存項目

XPG4.2
Single UNIX Specification、バージョン 3
Language Environment®

両方  

形式

#define _XOPEN_SOURCE_EXTENDED 1

#undef _ALL_SOURCE
#include <sys/time.h>

int gettimeofday(struct timeval *__restrict__ tp,
                 void *__restrict__ tzp);

#define _ALL_SOURCE
#include <sys/time.h>

int gettimeofday(struct timeval *__restrict__ tp, 
                 struct timezone *__restrict__ tzp);
#define _LARGE_TIME_API
#include <time.h>

int gettimeofday64(struct timeval64 *__restrict__ tp,  
                   void *__restrict__ tzp);

機能説明

gettimeofday() 関数は、協定世界時 (UTC) 1970 年 1 月 1 日 00:00:00 からの秒数とマイクロ秒数 で表した現在の時刻を取得し、それを tp が指す timeval 構造体へ格納します。

_ALL_SOURCE の特殊な動作: gettimeofday() 関数には 2 つのプロトタイプがあります。 1 つは、ユーザーのプログ ラムをコンパイルするとき、_ALL_SOURCE フィーチャー・テスト・マク ロを定義しているかどうかに依存して使用されます。C/370™ プリプロセッサーが <sys/time.h> ヘッダーを処理するときに、_ALL_SOURCE が定義されていない場合は、gettimeofday() のプロトタイプがインクルードされます。このプロトタイプは、2 番目の引数 tzp をボイド・ポインターとして定義し、tzp を無視する C/370 版 gettimeofday() 用の C/370 pragma map ステートメントをインクルードします。

_ALL_SOURCE が定義されている場合は、C/370 プリプロセッサーにより、tzp を timezone 構造体へのポインターとして定義する gettimeofday() のプロトタイプがインクルードされます。さら に、C/370 版 gettimeofday() の pragma map ステートメントがインクルードされ、2 番目の 引数が指す timezone 構造体に 時間帯情報が保管されます。timezone 構造体には、以下のメンバーがあります。
     int tz_minuteswest;   /* Time west of Greenwich in minutes */
     int tz_dsttime;       /* Type of DST correction to apply   */
_ALL_SOURCE が定義されている場合、gettimeofday() 関数は次の処理を 行います。
  1. tzset() を呼び出して、timezone および daylight 外部変数の値を設定 する。
  2. timezone 外部変数の値を分に変換し、その変換値を tzp->tz_minuteswest で最も近い分に切り上げて保管する。
  3. daylight 外部変数の値を tzp->tz_dsttime で保管する。

関数 gettimeofday64() は、gettimeofday() とまったく同じように動作します。ただし、2038 年 1 月 19 日の 03:14:07 UTC を超えるカレンダー時間をサポートする点を除きます。

_ALL_SOURCE バージョンの gettimeofday64() に対するサポートはありません。

戻り値

正常に実行された場合、gettimeofday() は 0 を戻します。

オーバーフローが発生した場合、gettimeofday() は、ゼロ以外の値を戻します。UTC、つまり 1970 年 1 月 1 日の 00:00:00 から数えた現在時刻 (秒単位) が、tp で指定される timeval 構造体の tv_sec メンバー の容量を超えると、オーバーフローが発生します。tv_sec メンバーは、型 time_t です。