こんにちは、もがちゃんです。
今回は前回のasctime同様、C言語で日時を出力する際に良く使用するctimeの使い方を簡単なサンプルプログラムとともに説明します。
目次
ctimeの構文
#include <time.h>
char *ctime(const time̲t *timer);
ctimeの説明
ctimeは、timerが指す日付時間情報をローカル時間を表す文字列に変換します。
ctime関数は、timerが指す暦時刻を文字列形式の地方時に変換する。これは、asctime(localtime(timer))と等価とする。
JISX3010 プログラム言語C
timer
文字列に変換したい日付時間情報のポインタを指定します。
返却値
timerポインタが指す日付時間情報をローカル時間を表す文字列に変換した結果へのポインタを返します。
ctimeの使い方サンプル
ctimeでローカル時間を表す文字列に変換した結果を表示する簡単なサンプルプログラムを紹介します。
サンプルプログラムと実行結果
#include <stdio.h>
#include <time.h>
int main(void) {
//timer == NULL指定時
time_t timer = time(NULL);
if(timer != -1) {
// ctimeでローカル時間を表す文字列に変換
fprintf(stdout, "*** ctime ***\n");
fprintf(stdout, "[%s]\n", ctime(&timer));
fprintf(stdout, "\n");
fprintf(stdout, "timer(NULL):%ld\n", timer);
struct tm *tm = localtime(&timer);
if(tm != NULL) {
fprintf(stdout, "*** localtime ***\n");
fprintf(stdout, "tm->tm_year [%d]\n" , tm->tm_year);
fprintf(stdout, "tm->tm_mon [%d]\n" , tm->tm_mon);
fprintf(stdout, "tm->tm_mday [%d]\n" , tm->tm_mday);
fprintf(stdout, "tm->tm_hour [%d]\n" , tm->tm_hour);
fprintf(stdout, "tm->tm_min [%d]\n" , tm->tm_min);
fprintf(stdout, "tm->tm_sec [%d]\n" , tm->tm_sec);
fprintf(stdout, "tm->tm_wday [%d]\n" , tm->tm_wday);
fprintf(stdout, "tm->tm_yday [%d]\n" , tm->tm_yday);
fprintf(stdout, "tm->tm_isdst[%d]\n" , tm->tm_isdst);
fprintf(stdout, "\n*** asctime ***\n");
fprintf(stdout,"[%s]", asctime(tm));
} else {
fprintf(stdout, "localtime error\n");
}
} else {
fprintf(stdout,"time error\n");
}
}
ctimeの結果もasctimeの結果同様に改行が付加されます。
ctimeの結果は、当然ながらasctime(localtime(timer))と同じになってます。
ctimeの使い方まとめ
- 単純にローカル日時を表現する文字列を出力するならasctimeを使用するよりもctimeを使用した方が簡単に出力できる。
- ctimeの結果も、asctimeの結果同様に改行文字が付加される。