この記事では、C言語で現在時刻を取得する方法と、取得した時刻を文字列として表示する方法について解説します。
現在時刻を取得する方法
現在時刻を取得するためには、C言語にはいくつかの方法があります。
ここでは、主にtime関数
とlocaltime関数
を使った現在時刻の取得方法について説明します。
time関数を使った現在時刻の取得
time関数
は、1970年1月1日午前0時からの経過秒数を返す関数です。
以下のようにtime関数
を使用することで、現在時刻を取得することができます。
#include <stdio.h>
#include <time.h>
int main() {
time_t currentTime;
time(¤tTime);
printf("現在時刻: %ld\n", currentTime);
return 0;
}
上記のコードでは、time関数
を呼び出して現在時刻を取得し、取得した時刻を整数として表示しています。
time関数
はtime_t型
のポインタを引数として受け取り、そのポインタが指す変数に現在時刻を格納します。
localtime関数を使った現在時刻の取得
localtime関数
は、time関数
で取得した経過秒数を日付と時刻の情報に変換する関数です。
以下のようにlocaltime関数
を使用することで、現在時刻の詳細な情報を取得することができます。
#include <stdio.h>
#include <time.h>
int main() {
time_t currentTime;
struct tm *localTime;
time(¤tTime);
localTime = localtime(¤tTime);
printf("現在時刻: %d/%d/%d %d:%d:%d\n",
localTime->tm_year + 1900, localTime->tm_mon + 1, localTime->tm_mday,
localTime->tm_hour, localTime->tm_min, localTime->tm_sec);
return 0;
}
上記のコードでは、time関数
で現在時刻を取得し、localtime関数
でその時刻を詳細な情報に変換しています。
localtime関数
はstruct tm型
のポインタを返し、そのポインタが指す構造体に年月日時分秒などの情報が格納されます。
現在時刻を文字列として取得する方法
strftime関数の概要
現在時刻を文字列として取得するためには、C言語の標準ライブラリであるtime.hに含まれるstrftime関数
を使用します。
strftime関数
は、指定したフォーマットに従って日付や時刻を文字列として変換する機能を持っています。
strftime関数を使った現在時刻の文字列化
strftime関数
を使用するには、以下のような手順で行います。
- 変換したい日付や時刻の情報を持つ構造体tmを用意します。
この構造体には、年、月、日、時、分、秒などの情報が格納されます。
- 構造体tmに現在時刻の情報を取得します。
これには、先ほど説明したtime関数
やlocaltime関数
を使用します。
strftime関数
を呼び出し、変換したいフォーマットと構造体tmを指定します。
フォーマットには、年、月、日、時、分、秒などの要素を指定するための特殊な記号があります。
strftime関数
は、指定したフォーマットに従って構造体tmの情報を文字列に変換し、指定したバッファに格納します。
実際のコード例
以下に、strftime関数
を使って現在時刻を文字列として取得するコード例を示します。
#include <stdio.h>
#include <time.h>
int main() {
time_t now;
struct tm *local;
char buffer[80];
// 現在時刻の取得
time(&now);
local = localtime(&now);
// フォーマット指定と文字列化
strftime(buffer, sizeof(buffer), "%Y-%m-%d %H:%M:%S", local);
// 結果の表示
printf("現在時刻: %s\n", buffer);
return 0;
}
このコードでは、time関数
を使って現在時刻を取得し、localtime関数
を使って構造体tmに変換しています。
そして、strftime関数
を使って構造体tmの情報を指定したフォーマットに従って文字列化し、結果をバッファに格納しています。
最後に、バッファの内容を表示しています。
上記のコードを実行すると、現在時刻が指定したフォーマットに従って表示されます。
フォーマット指定には、年を表す%Y
、月を表す%m
、日を表す%d
、時を表す%H
、分を表す%M
、秒を表す%S
などの特殊な記号を使用します。
このように、strftime関数
を使うことで、C言語で現在時刻を文字列として取得することができます。
フォーマット指定を変えることで、様々な形式の日付や時刻を取得することも可能です。