Linux講座にようこそ。このページは「C言語プログラミング入門 - 第14章.ライブラリ関数 - 日付および時間ライブラリ」です。
ctime関数は紀元からの経過秒数(1970年1月1日00:00:00 UTCからの経過秒数)を文字形式の日時に変換します。日時はローカル時間に変換しますので明示的に変換する必要は有りません。
変換結果は英語表現で次のような形式です。最後に改行文字が付加されますので注意してください。
曜日 月 日 時:分:秒 西暦\n
形式 | #include <time.h> char *ctime(const time_t *timep); |
---|---|
返り値 | 文字形式の日時を返します。エラーの場合はNULLを返します。 |
引数 |
|
asctime関数は日時構造体(tm構造体)から文字形式の日時に変換します。日時はローカル時間に変換しますので明示的に変換する必要は有りません。また、変換結果はctime関数と同じです。
形式 | #include <time.h> char *asctime(const struct tm *tm); |
---|---|
返り値 | 文字形式の日時を返します。エラーの場合はNULLを返します。 |
引数 |
|
strftime関数は日時構造体(tm構造体)を書式に従い編集します。書式には表14-5-10の変換指定文字が使用できます。
形式 | #include <time.h> size_t strftime(char *s, size_t max, const char *format, const struct tm *tm); |
---|---|
返り値 | 編集結果の文字数(ヌル文字は含まない)を返します。書式の内容により、0が返る可能性が有りますがエラーとは限りません。 |
引数 |
|
書式には次の変換指定文字を指定します。変換指定文字以外の文字はそのまま編集結果に反映します。
変換指定文字 | 意味 |
---|---|
%a | 現在のロケールにおける曜日の省略名です。 |
%A | 現在のロケールにおける曜日の完全な名前です。 |
%b | 現在のロケールにおける月の省略名です。 |
%B | 現在のロケールにおける月の完全な名前です。 |
%c | 現在のロケールにおける一般的な日付・時刻の表記です。 |
%d | 日です。(01〜31) |
%H | 24時間表記での時です。(00〜23) |
%I | 12時間表記での時です。(01〜12) |
%j | 年の初めから通算の日数です。(001〜366) |
%m | 月です。(01〜12) |
%M | 分です。(00〜59) |
%p | 現在のロケールにおける「午前」と「午後」に相当する文字列です。英語の場合には'AM'または'PM'です。正午は午後、真夜中は午前として扱われます。 |
%S | 秒です。(00〜60) |
%U | 年の初めからの通算の週数です。(00〜53)その年の最初の日曜日を第1週の始まりとして計算します。 |
%W | 年の初めからの通算の週数です。(00〜53)その年の最初の月曜日を第1週の始まりとして計算します。 |
%x | 現在のロケールにおける一般的な日付表記です。時刻は含みません。 |
%X | 現在のロケールにおける一般的な時刻表記です。日付は含みません。 |
%y | 西暦の下2桁(世紀部分を含まない年)です。(00〜99) |
%Y | 世紀部分を含めた(4桁の)西暦年です。 |
%Z | タイムゾーンまたは、ゾーン名または、それらの省略名です。 |
ctime関数で英語表現の日時を表示し、strftime関数で日本語表現で日時を表示します。
$ date 2009年 8月 25日 火曜日 09:25:19 JST $ $ ./ex14_5_2.prg ctime関数 Tue Aug 25 09:25:21 2009 strftime関数 2009年08月25日 09時25分21秒 2009年08月25日 午前09時25分21秒 JST $
clock関数はプログラムのCPU使用時間の近似値をclock_t単位の時間で取得します。秒単位でのCPU使用時間はCLOCKS_PER_SECで割ることで算出できます。また、clock_t単位の時間は桁あふれをする可能性がありますので注意してください。例えばCLOCKS_PER_SECが1000000である32ビットシステムでは、約72分毎に同じ値を返すことになります。
この関数の標準規格では、最初の呼び出しではどのような値が返ってきても構わないことになっています。移植性を確保するためには、計測開始時にclock関数を呼び出してCPU使用時間を取得しておき、この値を差し引くことで実際のCPU使用時間を求めた方がよいでしょう。
形式 | #include <time.h> clock_t clock(void); |
---|---|
返り値 | clock_t単位のCPU使用時間を返します。エラーの場合は((clock_t) -1) を返します。 |
引数 | ありません。 |
difftime関数は2つの紀元からの経過秒数から経過時間を算出します。
形式 | #include <time.h> double difftime(time_t time1, time_t time0); |
---|---|
返り値 | 秒単位の経過時間を返します。 |
引数 |
|
プログラムのCPU使用時間と実行時間(経過時間)を表示します。
$ ./ex14_5_3.prg CPU使用時間:1.1秒 経過時間:6.0秒 $