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
時間を扱う関数
mktime
ヘッダ #include "time.h"
形 式 time_t mktime(struct tm *timeptr);
機 能 mktime関数は、timeptrで指される構造体中の現地時刻を表現している要素別の時刻を、time関数が返す値と同じ表現形式をもった暦時刻値に変換する。構造体のtm_wdayおよびtm_yday要素の元の値は無視し、その他の要素の元の値は、struct tmの解説で示した値の範囲内でなくても構わない。正常に動作が完了した場合、構造体のtm_wdayおよびtm_yday要素の値を適切に設定し、他の要素は指定された暦時刻を表すように設定するが、それらの値は強制的にstruct tmの解説で示した範囲に設定する。ここで、tm_mdayの最終値はtm_monおよびtm_yearが決まるまで設定しない。
返却値 mktime関数は、指定された暦時刻を型time_tの値に表現形式を変換して返す。暦時刻が表現できない場合、関数は値(time_t)-1を返す。

【引数】
struct tm *tp : 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;
struct tm *t_st;

t.tm_year = 101; /* 2001年 */
t.tm_mon = 4; /* 5月 */
t.tm_mday = 20; /* 20日 */
t.tm_wday = 0; /* 日曜日 */
t.tm_hour = 14; /* 14時 */
t.tm_min = 20; /* 20分 */
t.tm_sec = 0; /* 00秒 */
t.tm_isdst= -1; /* 夏時間無効 */

/* 構造体を時刻に変換 */
timer = mktime(&t);

printf("時刻 : %ld\n",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("曜日: %d\n",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;
}

【実行結果例】

時刻 : 990368400
年 : 2001
月 : 5
日 : 20
曜日: 0
時 : 14
分 : 20
秒 : 0

[Quote]:http://www.bohyoh.com/CandCPP/C/Library/mktime.htmlhttp://www.bohyoh.com/CandCPP/C/Library/mktime.html

| BLOG TOP |
DATE: CATEGORY:C/C++ time.h
時間を扱う関数
ctime
ヘッダ #include "time.h"
形 式 char *ctime(const time_t *timer);
機 能 timerで指される暦時刻を文字列形式の地方時に変換する。すなわち、asctime(localtime(timer))と等価である。
返却値 要素別の時刻を実引数としたasctime関数が返すポインタを返す。

【引数】
const time_t *timer : グリニッチ標準時(GMT)の1970年 1月 1日の 00:00:00 からの経過時間を
               秒単位に換算したもの。
               「const」についてはasctime関数を参照のこと。

【使用例】

#include
#include

int main(void)
{
time_t timer;

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

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

return 0;
}

【実行結果例】

Sun May 20 15:07:23 2001

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

| BLOG TOP |
DATE: CATEGORY:C/C++ time.h
時間を扱う関数
asctime
ヘッダ #include "time.h"
形 式 char *asctime(const struct tm *timeptr);
機 能 timeptrで指される構造体の要素別の時刻を、次の形式の文字列に変換します。
  Sun Sep 16 01 : 03 : 52 1973\n\0
返却値 変換した文字列へのポインタを返す。

【引数】
const struct tm *tblock : 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 */
};

(参考) const型修飾子
const修飾子が付けられた引数は、値が変更されないことを保証されています。
const修飾子を付けた変数やポインタの指す内容が変更される場合、コンパイル時にエラーとなります。

【使用例】

#include
#include

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

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

/* 現在時刻を構造体に変換 */
t_st = localtime(&timer);

/* tm構造体を文字列に変換 */
printf("%s",asctime(t_st));

return 0;
}

※ 単にtime関数で取得した現在時刻を文字列に変換する場合は、ctime関数の方が適しているでしょう。

【実行結果例】

Sun May 20 15:04:24 2001

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

| BLOG TOP |

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