C言語 - 標準ライブラリ - time.h - 概要
- 1. 概要
1. 概要
Cの標準ライブラリには、おそらく初期のころから存在する time_t 型、struct tm 型を扱うもの
すなわち
typedef __time_t time_t; // 結局これ読んでもわかりませんが
// 紀元 (Epoch; 1970-01-01 00:00:00 (UTC)) からの秒数
struct tm
{
int tm_sec; // 秒 0~60(60 は閏秒)
int tm_min; // 分 0~59
int tm_hour; // 時 0~23
int tm_mday; // 月内の日 0~31
int tm_mon; // 1月を0とする月 0~11
int tm_year; // 1900年を0とする年
int tm_wday; // 日曜日を0とする曜日
int tm_yday; // 1月1日を 0 とする日 0~365
int tm_isdst; // サマータイム
long tm_gmtoff; // グリニッジ時刻からのオフセット
char *tm_zone; // タイムゾーン
};
という秒単位までの日時を示すものと
struct timeval 型、struct timespec 型を扱う系列のもの
すなわち
struct timeval
{
time_t tv_sec; // 秒
suseconds_t tv_usec; // μ(マイクロ)秒
};
struct timespec
{
time_t tv_sec; // 秒
long tv_nsec; // n(ナノ)秒
};
という最小単位n(ナノ)秒まで扱う系列のものが存在します。
わたしは、以前の仕事で 8000 Hz(ヘルツ)のサイクルで動作するものを扱ったことがあります。
8000 Hz は1単位が 1/8000 秒なので 0.000125 秒 = 0.125 ㍉秒 = 125 μ秒てことで、その仕事では後者を使わざるを得ないことになるわけです。
当然、目的や用途によって使い分けることになります。
目覚まし時計レベルであれば、秒単位で構わないでしょうし、機械的な計測を行うものであれば、より精度の高い方を使うことになります。
|
|