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 μ秒てことで、その仕事では後者を使わざるを得ないことになるわけです。  当然、目的や用途によって使い分けることになります。  目覚まし時計レベルであれば、秒単位で構わないでしょうし、機械的な計測を行うものであれば、より精度の高い方を使うことになります。