【C言語】time.hで日付や時刻を扱う簡単な方法【標準ライブラリ】

【C言語】time.hで日付や時刻を扱う簡単な方法【標準ライブラリ】

目次

time.hとは

C言語の標準ライブラリ time.h は、時間や日付を扱うためのヘッダーファイルです。 主な機能には、現在の時刻の取得、経過時間の測定、時刻のフォーマット、時刻の変換などがあります。

現在の時刻を取得する

time() 関数を使用すると、現在の時刻を取得できます。 取得される時刻は「UNIX時間(1970年1月1日00:00:00 UTCからの秒数)」で表されます。


#include <stdio.h>
#include <time.h>

int main() {
    time_t now = time(NULL);
    printf("現在の時刻(UNIX時間): %ld\n", now);
    return 0;
}

時刻をフォーマットして表示する

ctime()strftime() を使うと、時刻を可読形式に変換できます。


#include <stdio.h>
#include <time.h>

int main() {
    time_t now = time(NULL);
    printf("現在の時刻: %s", ctime(&now));
    return 0;
}

より柔軟なフォーマットが必要な場合は strftime() を使います。


#include <stdio.h>
#include <time.h>

int main() {
    time_t now = time(NULL);
    struct tm *local = localtime(&now);
    
    char buffer[80];
    strftime(buffer, sizeof(buffer), "%Y-%m-%d %H:%M:%S", local);
    printf("フォーマットされた時刻: %s\n", buffer);
    
    return 0;
}

経過時間を測定する

difftime() を使うと、2つの時刻の差を求められます。


#include <stdio.h>
#include <time.h>

int main() {
    time_t start = time(NULL);
    
    // 何か時間のかかる処理(例: 5秒待つ)
    sleep(5);
    
    time_t end = time(NULL);
    double elapsed = difftime(end, start);
    
    printf("経過時間: %.2f秒\n", elapsed);
    return 0;
}

time_t型の活用

time_t は時刻を表す型で、UNIX時間を格納します。 これを使って時刻の保存や比較ができます。

struct tm構造体の活用

struct tm は日付や時刻を詳細に分解するための構造体です。 localtime()gmtime() を使って変換できます。


#include <stdio.h>
#include <time.h>

int main() {
    time_t now = time(NULL);
    struct tm *local = localtime(&now);

    printf("年: %d\n", local->tm_year + 1900);
    printf("月: %d\n", local->tm_mon + 1);
    printf("日: %d\n", local->tm_mday);
    return 0;
}

時刻の変換

mktime() を使うと、struct tmtime_t に変換できます。


#include <stdio.h>
#include <time.h>

int main() {
    struct tm t = {0};
    t.tm_year = 2024 - 1900;
    t.tm_mon = 5 - 1;
    t.tm_mday = 20;

    time_t time_value = mktime(&t);
    printf("UNIX時間: %ld\n", time_value);
    return 0;
}

システム時間を取得・変更する

clock() を使うと、プログラムのCPU時間を取得できます。


#include <stdio.h>
#include <time.h>

int main() {
    clock_t start = clock();
    
    // 何か処理をする(例: ループ)
    for (volatile int i = 0; i < 100000000; i++);
    
    clock_t end = clock();
    double elapsed = (double)(end - start) / CLOCKS_PER_SEC;
    
    printf("CPU時間: %.6f秒\n", elapsed);
    return 0;
}

実用的な活用例

  • ログのタイムスタンプを記録
  • 実行時間を測定して最適化
  • 一定時間ごとに処理を実行
  • 日付に基づくファイル管理

C言語の time.h を活用すると、さまざまな時間関連の処理が可能になります。 基本的な時刻取得やフォーマットから、経過時間の計測、システム時間の操作まで、用途に応じて使い分けてください。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です