gettimeofday()、gettimeofday64() - 日時の取得
標準
標準/拡張機能 | C/C++ | 依存項目 |
---|---|---|
XPG4.2 |
両方 |
形式
#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 ステートメントをインクルードします。
int tz_minuteswest; /* Time west of Greenwich in minutes */
int tz_dsttime; /* Type of DST correction to apply */
_ALL_SOURCE が定義されている場合、gettimeofday() 関数は次の処理を
行います。- tzset() を呼び出して、timezone および daylight 外部変数の値を設定 する。
- timezone 外部変数の値を分に変換し、その変換値を tzp->tz_minuteswest で最も近い分に切り上げて保管する。
- 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 です。