clock.c
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 | /*
time.h [clock]
書式: clock_t clock(void)
機能: プログラム実行時からの時間を取得
引数: なし
戻り値: プログラム実行時からの経過時間を返す.
*/
/*
clock_t: clock() の戻り値に使われる経過時間を格納する,
通常, long 型 を typedef している.
CLOCKS_PER_SEC: clock() での戻り値の単位が time.h で定義されている.
1000 の場合は, ミリ秒となる.
*/
#include <stdio.h>
#include <time.h>
int main(void){
clock_t start, end;
int i;
start = clock();
printf("開始時間: %d\n", (int)start);
/* 何かの処理 */
for(i = 0; i < 10; i++);
end = clock();
printf("終了時間: %d\n", (int)end);
printf( "処理時間: %d[ms]\n", (int)(end-start) );
return 0;
}
|
clock.c の実行結果は:
[cactus:~/code_c/refer]% ./clock
開始時間: 1001
終了時間: 1077
処理時間: 76[ms]
time.c
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 | /*
time.h [clock]
書式: time_t time(time_t *timer)
機能: システム時刻の取得
引数: time_t *timer: システム時刻 (秒) を格納
戻り値: 成功すると, システム時刻を返し,
失敗すると, -1 を返す.
また, 引数 (timer) に NULL を指定すると, システム時刻を返す.
*/
#include <stdio.h>
#include <time.h>
int main(void){
time_t sec;
int yy, dd, hh, mm;
time(&sec);
printf("1970 年から %d[秒]経過...\n", (int)sec);
mm = sec / 60;
printf("1970 年から %d[分]経過...\n", mm);
hh = mm / 60;
printf("1970 年から %d[時間]経過...\n", hh);
dd = hh / 24;
printf("1970 年から %d[日]経過...\n", dd);
yy = dd / 365;
printf("1970 年から %d[年]経過...\n", yy);
return 0;
}
|
time.c の実行結果は:
[cactus:~/code_c/refer]% ./time
1970 年から 1284175853[秒]経過...
1970 年から 21402930[分]経過...
1970 年から 356715[時間]経過...
1970 年から 14863[日]経過...
1970 年から 40[年]経過...
ctime.c
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | /*
time.h [ctime]
書式: char *ctime(const time_t *timer)
機能: システム時刻を日時の文字列に変換
引数: const time_t *timer: time() で取得したシステム時刻
戻り値: 日本時間の日時に変換した文字列を返す.
*/
#include <stdio.h>
#include <time.h>
int main(void){
time_t sec;
char *str;
time(&sec);
str = ctime(&sec);
printf("%s", str);
return 0;
}
|
ctime.c の実行結果は:
[cactus:~/code_c/refer]% ./ctime
Sat Sep 11 12:35:07 2010
difftime.c
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | /*
time.h [difftime]
書式: double difftime(time_t t1, time_t t2)
機能: システム時刻の差を取得
引数: time_t t1: 差を求める時刻
time_t t2: 差を求める時刻
戻り値: t1 - t2 の時刻を double 型で返す.
*/
#include <stdio.h>
#include <time.h>
int main(void){
time_t start, end;
int i;
time(&start);
printf("開始時間: %d\n", (int)start);
/* 何かの処理 */
for(i = 0; i < 1000000000; i++);
time(&end);
printf("終了時間: %d\n", (int)end);
printf( "処理時間: %f[秒]\n", difftime(end, start) );
return 0;
}
|
difftime.c の実行結果は:
[cactus:~/code_c/refer]% ./difftime
開始時間: 1284176546
終了時間: 1284176549
処理時間: 3.000000[秒]
localtime.c
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 | /*
システム時刻とは, 一般的にグリニッジ標準時の
1970 年 1 月 1 日 00:00:00 を基準とした, 現在
までの経過時間 (秒) のことで, time() で取得.
*/
/*
time.h [localtime]
書式: struct tm* localtime(const time_t *timer)
機能: システム時刻を地域時間用の構造体に変換
引数: const time_t *timer: time() で取得したシステム時刻
戻り値: 日本時間に変換された, struct tm 型の構造体で返す.
*/
/*
struct tm 型の構造体
int tm_sec : 秒[0~61] (最大 2 秒のうるう秒を含むため)
int tm_min : 分[0~59]
int tm_hour : 時[0~23]
int tm_mday : 日[1~31]
int tm_mon : 月[0~11] (-1 された月数)
int tm_year : 年 (1900 からの経過年数)
int tm_wday : 曜日[0~6](日:0 月:1 火:2 水:3 木:4 金:5 土:6)
int tm_yday : 1 月 1 日からの経過日数[0~365]
int tm_isdst: 夏時間の有無 (0:なし 正の値:夏時間)
*/
#include <stdio.h>
#include <time.h>
int main(void){
time_t now;
struct tm *ltm;
time(&now);
ltm = localtime(&now);
printf("%5d: [年]\n", ltm->tm_year + 1900);
printf("%5d: [月]\n", ltm->tm_mon + 1);
printf("%5d: [日]\n", ltm->tm_mday);
printf("%5d: [時]\n", ltm->tm_hour);
printf("%5d: [分]\n", ltm->tm_min);
printf("%5d: [秒]\n", ltm->tm_sec);
printf("%5d: [曜日]\n", ltm->tm_wday);
printf("%5d: [経過日数]\n", ltm->tm_yday);
printf("%5d: [夏時間の有無]\n", ltm->tm_isdst);
return 0;
}
|
localtime.c の実行結果は:
[cactus:~/code_c/refer]% ./localtime
2010: [年]
9: [月]
11: [日]
12: [時]
57: [分]
4: [秒]
6: [曜日]
253: [経過日数]
0: [夏時間の有無]
gmtime.c
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 | /*
システム時刻とは, 一般的にグリニッジ標準時の
1970 年 1 月 1 日 00:00:00 を基準とした, 現在
までの経過時間 (秒) のことで, time() で取得.
*/
/*
time.h [gmtime]
書式: struct tm* gmtime(const time_t *timer)
機能: システム時刻をグリニッジ標準用の構造体に変換
引数: const time_t *timer: time() で取得したシステム時刻
戻り値: グリニッジ標準時に変換された, struct tm 型の構造体で返す.
*/
/*
struct tm 型の構造体
int tm_sec : 秒[0~61] (最大 2 秒のうるう秒を含むため)
int tm_min : 分[0~59]
int tm_hour : 時[0~23]
int tm_mday : 日[1~31]
int tm_mon : 月[0~11] (-1 された月数)
int tm_year : 年 (1900 からの経過年数)
int tm_wday : 曜日[0~6](日:0 月:1 火:2 水:3 木:4 金:5 土:6)
int tm_yday : 1 月 1 日からの経過日数[0~365]
int tm_isdst: 夏時間の有無 (0:なし 正の値:夏時間)
*/
#include <stdio.h>
#include <time.h>
int main(void){
time_t now;
struct tm *ltm;
time(&now);
ltm = gmtime(&now);
printf("%5d: [年]\n", ltm->tm_year + 1900);
printf("%5d: [月]\n", ltm->tm_mon + 1);
printf("%5d: [日]\n", ltm->tm_mday);
printf("%5d: [時]\n", ltm->tm_hour);
printf("%5d: [分]\n", ltm->tm_min);
printf("%5d: [秒]\n", ltm->tm_sec);
printf("%5d: [曜日]\n", ltm->tm_wday);
printf("%5d: [経過日数]\n", ltm->tm_yday);
printf("%5d: [夏時間の有無]\n", ltm->tm_isdst);
return 0;
}
|
gmtime.c の実行結果は:
[cactus:~/code_c/refer]% ./gmtime
2010: [年]
9: [月]
11: [日]
4: [時]
2: [分]
17: [秒]
6: [曜日]
253: [経過日数]
0: [夏時間の有無]
mktime.c
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 | /*
time.h [mktime]
書式: time_t mktime(struct tm *stm)
機能: struct tm 構造体 time_t 型に変換
引数: struct tm *stm: 変換元となる struct tm 型の構造体
戻り値: 成功すると, time_t 型に変換された値を返し,
失敗すると, -1 を返す.
*/
#include <stdio.h>
#include <time.h>
int main(void){
time_t tim;
struct tm stm1;
struct tm *stm2;
stm1.tm_year = 2008 - 1900;
stm1.tm_mon = 12 - 1;
stm1.tm_mday = 3;
stm1.tm_hour = 0;
stm1.tm_min = 0;
stm1.tm_sec = 0;
tim = mktime(&stm1);
printf("%d\n", (int)tim);
stm2 = localtime(&tim);
printf("%d\n", stm2->tm_wday);
return 0;
}
|
mktime.c の実行結果は:
[cactus:~/code_c/refer]% ./mktime
1228230000
3
asctime.c
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | /*
time.h [asctime]
書式: char* asctime(struct tm *stm)
機能: struct tm 構造体 を文字列に変換
引数: struct tm *stm: 変換元となる struct tm 型の構造体
戻り値: 変換した文字列を返す.
*/
#include <stdio.h>
#include <time.h>
int main(void){
time_t tim;
struct tm *stm;
char *str;
time(&tim);
stm = localtime(&tim);
str = asctime(stm);
/* 変換された文字列には, [\n] [\0] が追加される */
printf("%s", str);
return 0;
}
|
asctime.c の実行結果は:
[cactus:~/code_c/refer]% ./asctime
Sat Sep 11 13:14:34 2010
strftime.c
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 | /*
time.h [strftime]
書式: size_t strftime(
char *s,
size_t maxsize,
const char *format,
const struct tm *stm
)
機能: struct tm 構造体を書式付き文字列に変換
引数: char *s: 変換した文字列の格納先
size_t maxsize: 文字列の最大バイト数
const char *format: 書式文字列
cosnt struct tm *stm: 変換元の struct tm 構造体
戻り値: 変換した文字のバイト数を返す.
*/
/*
書式文字列:
年
%Y : 西暦での年数
%y : 西暦での下2桁の年数
月
%m : 月数[01~12]
%B : 月の名称
%b : 月の略称
日
%d : 日付[01~31]
%x : 日付(年月日)
%c : 日付(年月日)と時刻
%j : 経過日数
曜日
%w : 曜日[0~6](0が日曜日)
%W : 経過した週[00~53](最初が月曜日)
%A : 曜日の名称
%a : 曜日の略称
時
%H : 時[00~23]
%I : 時[00~12]
%p : 午前/午後の文字列
分
%M : 分[00~59]
秒
%S : 秒[00~61]
%X : 時刻(00:00:00)
その他
%% : %(パーセント記号)を表示
*/
#include <stdio.h>
#include <time.h>
#include <locale.h>
int main(void){
struct tm *stm;
time_t tim;
char s[100];
setlocale(LC_ALL, "jpn");
time(&tim);
stm = localtime(&tim);
strftime(s, 100, "%Y年%m月%d日(%A)%H時%M分%S秒", stm);
puts(s);
return 0;
}
|
strftime.c の実行結果は:
[cactus:~/code_c/refer]% ./strftime
2010年09月11日(Saturday)13時24分12秒