Profile

ys2310

Author:ys2310
2008年春にNew York Cityにあるふる〜い大学を卒業。


Categories


new postings


new comments


new trackbacks


monthly archeive


FC2ブログ 転職
DATE: CATEGORY:スポンサー広告
上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
| BLOG TOP |
DATE: CATEGORY:C/C++ time.h
時間を扱う関数
clock
ヘッダ #include "time.h"
形 式 clock_t clock(void);
機 能 clock関数は、使用したプロセッサ時間を求める。
返却値 clock関数は、そのプログラムの起動に関連した処理系定義の時点からそのプログラムで使用したプロセッサ時間を、処理系の最良の近似で返す。秒単位の時間を決定するためには、clock関数の返却値をCLOCKS_PER_SECマクロの値で割ったほうがよい。使用したプロセッサ時間が得られないかまたはその値が表現できない場合、値(clock_t)-1を返す。

【使用例】

#include "time.h"
#include "stdio.h"

int main(void)
{
clock_t start, end;
long l;

start = clock();

for (l=0; l<100000000; l++);

end = clock();
printf("空ループ1億回の時間: %f秒\n", (double)(end - start) / CLOCKS_PER_SEC);

return 0;
}

※このサンプルプログラムはdifftime関数のサンプルプログラムと同様の処理をします。
 ただし、秒以下の単位を取得するには clock関数を用い、長時間の計測を行う場合には difftime関数を用いてください。これは、clock関数がプロセッサ時間を返却するため返却値の上限が低いためです。(2001.11.16追記)

【実行結果例】

空ループ1億回の時間: 1.650000秒     (注)Turbo-C++ Version4.0で確認

[Quote]:http://www.bohyoh.com/CandCPP/C/Library/clock.htmlhttp://www9.plala.or.jp/sgwr-t/lib/clock.html

| BLOG TOP |
DATE: CATEGORY:C/C++ time.h
gmtime
tm構造体への変換
【書式】
#include "time.h"
struct tm *gmtime(const time_t *timer);

【説明】
timer に格納されているデータを グリニッジ標準時間(世界標準時間)に変換し、tm構造体に格納します。
timerに格納されているデータは一般にtime関数を使って取得します。
似ていますが、localtime関数は日本時間を得ます。

【引数】
const time_t *timer : 暦時間の格納元。
               「const」についてはasctime関数を参照のこと。

【戻り値】
tm構造体を指すポインタ

構造体 tm はtime.h の中で宣言され、以下の情報を含みます
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] 0から始まることに注意 */
int tm_year; /* 年 [1900からの経過年数] */
int tm_wday; /* 曜日 [0:日 1:月 ... 6:土] */
int tm_yday; /* 年内の通し日数 [0-365] 0から始まることに注意*/
int tm_isdst; /* 夏時間が無効であれば 0 */
};

【使用例】

#include
#include

int main(void)
{
time_t timer;
struct tm *jt;
struct tm *gt;
char *wday[] = {"日","月","火","水","木","金","土"};

/* 現在時刻の取得 */
time(&timer);

/* 現在時刻をグリニッジ時間に変換 */
gt = gmtime(&timer);
printf("グリニッジ時間\n");
printf("年 : %d\n",gt->tm_year+1900);
printf("月 : %d\n",gt->tm_mon+1);
printf("日 : %d\n",gt->tm_mday);
printf("曜日: %s\n",wday[gt->tm_wday]);
printf("時 : %d\n",gt->tm_hour);
printf("分 : %d\n",gt->tm_min);
printf("秒 : %d\n",gt->tm_sec);

/* 現在時刻を日本時間に変換 */
jt = localtime(&timer);
printf("\n日本時間\n");
printf("年 : %d\n",jt->tm_year+1900);
printf("月 : %d\n",jt->tm_mon+1);
printf("日 : %d\n",jt->tm_mday);
printf("曜日: %s\n",wday[jt->tm_wday]);
printf("時 : %d\n",jt->tm_hour);
printf("分 : %d\n",jt->tm_min);
printf("秒 : %d\n",jt->tm_sec);

return 0;
}

【実行結果例】

グリニッジ時間
年 : 2001
月 : 5
日 : 20
曜日: 日
時 : 6
分 : 40
秒 : 48

日本時間
年 : 2001
月 : 5
日 : 20
曜日: 日
時 : 15
分 : 40
秒 : 48

(注)LSIC試食版でgmtimeを使っても日本時間しか得られ無い場合は、環境変数TZを
set TZ=JST-9
   としてください。

[Quote]:http://www9.plala.or.jp/sgwr-t/lib/gmtime.html

| BLOG TOP |
DATE: CATEGORY:C/C++ time.h
時間を扱う関数
time
ヘッダ #include "time.h"
形 式 time_t time(time_t *timer);
機 能 time関数は、現在の暦時刻を決定する。その値の表現形式は、未定義である。
返却値 time関数は、現在の暦時刻を処理系の最良の近似で返す。暦時刻が有効でない場合、値(time_t)-1を返す。timerが空ポインタでない場合、timerが指すオブジェクトにも返却値を代入する。

【説明】
暦時刻を、timer が指す記憶場所に格納します。暦時刻は多くの処理系で、グリニッチ標準時(GMT)の1970年 1月 1日の00:00:00 から現在までの経過時間を秒単位で扱います。
time_t は time.h の中で宣言されていますが、一般に typedef long time_t; です。
timer に入る値と、関数の戻り値は同じ物です。ただし、timer に NULL を設定した場合には、戻り値に暦時間を返却するのみとなります。
返却データは localtime関数や ctime関数を使って読めるようにするのが一般的です。

【引数】
time_t *timer : 経過時間の格納場所へのポインタ

【使用例】

#include
#include

int main(void)
{
time_t timer;
struct tm *t_st;

/* 現在時刻の取得 */
time(&timer);

/* 現在時刻を文字列に変換して表示 */
printf("現在時刻: %s\n", ctime(&timer));

/* 現在時刻を構造体に変換 */
t_st = localtime(&timer);
printf("月: %d\n",t_st->tm_mon+1); /* 月は+1 */
printf("日: %d\n",t_st->tm_mday);
printf("時: %d\n",t_st->tm_hour);
printf("分: %d\n",t_st->tm_min);
printf("秒: %d\n",t_st->tm_sec);

return 0;
}

【実行結果例】

現在時刻: Wed Mar 06 00:35:26 2002

月: 3
日: 6
時: 0
分: 35
秒: 26

[Quote]:http://www.bohyoh.com/CandCPP/C/Library/time.htmlhttp://www9.plala.or.jp/sgwr-t/lib/time.html

| BLOG TOP |
DATE: CATEGORY:C/C++ time.h
時間を扱う関数
difftime
ヘッダ #include "time.h"
形 式 double difftime(time_t time1, time_t time0);
機 能 difftime関数は、二つの暦時刻の差であるtime1 - time0を計算する。
返却値 difftime関数は、その差を秒単位で表しdouble型として返す。

【説明】
time1からtime2までの時間差を秒単位で算出します。
一般に、time1とtime2はtime関数を使って取得します。

【引数】
time_t time1 : 先に取得した時間
time_t time2 : 後から取得した時間

【使用例】

#include
#include

int main(void)
{
time_t time1, time2;
long l;

time(&time1);

for (l=0; l<100000000; l++);

time(&time2);
printf("空ループ1億回の時間: %f秒\n", difftime(time2,time1));

return 0;
}

※このサンプルプログラムはclock関数のサンプルプログラムと同様の処理をします。
 ただし、秒以下の単位を取得するには clock関数を用い、長時間の計測を行う場合には difftime関数を用いてください。これは、clock関数がプロセッサ時間を返却するため返却値の上限が低いためです。(2001.11.16追記)

【実行結果例】

空ループ1億回の時間: 2.000000秒       (注)Turbo-C++ Version4.0で確認

[Quote]:http://www.bohyoh.com/CandCPP/C/Library/difftime.htmlhttp://www9.plala.or.jp/sgwr-t/lib/difftime.html

| BLOG TOP |
DATE: CATEGORY:C/C++ time.h
時間を扱う関数
localtime
ヘッダ #include "time.h"
形 式 struct tm *localtime(const time_t *timer);
機 能 timerが指す暦時刻を地方時で表した要素別の時刻に変換する。
返却値 変換したオブジェクトへのポインタを返す。

【引数】
const time_t *timer : 暦時間の格納元。
               「const」についてはasctime関数を参照のこと。

【戻り値】
tm構造体を指すポインタ

構造体 tm はtime.h の中で宣言され、以下の情報を含みます
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] 0から始まることに注意 */
int tm_year; /* 年 [1900からの経過年数] */
int tm_wday; /* 曜日 [0:日 1:月 ... 6:土] */
int tm_yday; /* 年内の通し日数 [0-365] 0から始まることに注意*/
int tm_isdst; /* 夏時間が無効であれば 0 */

【使用例】

#include
#include

int main(void)
{
time_t timer;
struct tm *t_st;
char *wday[] = {"日","月","火","水","木","金","土"};

/* 現在時刻の取得 */
time(&timer);

/* 現在時刻を構造体に変換 */
t_st = localtime(&timer);
printf("年 : %d\n",t_st->tm_year+1900);
printf("月 : %d\n",t_st->tm_mon+1);
printf("日 : %d\n",t_st->tm_mday);
printf("曜日: %s\n",wday[t_st->tm_wday]);
printf("時 : %d\n",t_st->tm_hour);
printf("分 : %d\n",t_st->tm_min);
printf("秒 : %d\n",t_st->tm_sec);

return 0;
}

【実行結果例】

年 : 2001
月 : 5
日 : 20
曜日: 日
時 : 15
分 : 5
秒 : 56

[Quote]:http://www.bohyoh.com/CandCPP/C/Library/localtime.htmlhttp://www9.plala.or.jp/sgwr-t/lib/localtime.html

| BLOG TOP |

copyright © Manhattan life all rights reserved.Powered by FC2ブログ