こんにちは、もがちゃんです。
今回は、C言語で日時を出力する際に良く使用するasctimeの使い方を簡単なサンプルプログラムとともに説明します。
目次
asctimeの構文
#include <time.h>
char *asctime(const struct tm *timeptr);
asctimeの説明
asctimeは、timeptrが指す構造体tmの内容を文字列に変換します。
asctime関数は、timeptrが指す構造体の要素別の時刻を、次の形式の文字列に変換する。 Sun Sep 16 01:03:52 1973\n\0
JISX3010 プログラム言語C
timeptr
文字列に変換したい日付・時間情報のポインタを指定します。
ローカル日時を文字列に変換したい場合は、localtime(timer)の結果を指定します。
返却値
timeptrポインタが指す日付・時間情報を文字列に変換した結果へのポインタを返します。
asctimeの使い方サンプル
ローカル日時を文字列に変換した結果を表示する簡単なサンプルプログラムを紹介します。
サンプルプログラムとその実行結果

asctimeを使ったサンプルプログラムの実行結果
#include <stdio.h>
#include <time.h>
int main(void) {
//timer == NULL指定時
time_t timer = time(NULL);
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");
}
}

asctimeの結果の文字列には、改行文字が付いているので改行されています。
asctimeの使い方まとめ
- localtimeやgmtimeの結果を文字列に変換するにはasctimeを使用すれば簡単に文字列に変換できる。
- asctimeでの変換結果は、Sun Sep 16 01:03:52 1973のような形式の日付時間文字列に変換される。(曜日 月 日 時:分:秒 年)
- asctimeで変換した文字列には改行文字が付加される。