【C言語】現在時刻を文字列として取得する方法

この記事では、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関数を使用するには、以下のような手順で行います。

  1. 変換したい日付や時刻の情報を持つ構造体tmを用意します。

この構造体には、年、月、日、時、分、秒などの情報が格納されます。

  1. 構造体tmに現在時刻の情報を取得します。

これには、先ほど説明したtime関数localtime関数を使用します。

  1. strftime関数を呼び出し、変換したいフォーマットと構造体tmを指定します。

フォーマットには、年、月、日、時、分、秒などの要素を指定するための特殊な記号があります。

  1. 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言語で現在時刻を文字列として取得することができます。

フォーマット指定を変えることで、様々な形式の日付や時刻を取得することも可能です。

目次から探す