【C言語】2つの日時を計算する方法

この記事では、C言語を使用して日時の計算方法を学ぶことができます。

初心者の方でもわかりやすく、具体的なコード例を交えて説明していますので、ぜひ参考にしてみてください。

目次から探す

日時の計算方法

日時の計算方法について

C言語では、日時の計算を行うために様々な関数やデータ型が用意されています。

日付や時刻の加算・減算、日時の差分の計算など、さまざまな操作が可能です。

日付の加算・減算

日付の加算・減算を行うには、struct tmというデータ型を使用します。

このデータ型は、年、月、日、時、分、秒などの情報を保持するための構造体です。

以下に、日付の加算と減算の例を示します。

#include <stdio.h>
#include <time.h>
int main() {
    struct tm date = {0}; // 初期化
    date.tm_year = 2022 - 1900; // 年を設定(1900年からの経過年数)
    date.tm_mon = 0; // 月を設定(0から11の範囲で指定)
    date.tm_mday = 1; // 日を設定
    // 1日後の日付を計算
    time_t nextDay = mktime(&date);
    struct tm* nextDate = localtime(&nextDay);
    printf("1日後の日付:%d年%d月%d日\n", nextDate->tm_year + 1900, nextDate->tm_mon + 1, nextDate->tm_mday);
    // 1日前の日付を計算
    time_t prevDay = mktime(&date);
    struct tm* prevDate = localtime(&prevDay);
    printf("1日前の日付:%d年%d月%d日\n", prevDate->tm_year + 1900, prevDate->tm_mon + 1, prevDate->tm_mday);
    return 0;
}

上記のコードでは、struct tmを使用して日付を設定し、mktime関数を使用してtime_t型の日付に変換しています。

その後、localtime関数を使用してstruct tm型に戻し、計算結果を表示しています。

時刻の加算・減算

時刻の加算・減算を行うには、struct tmtime_tを使用します。

struct tmには、時、分、秒などの情報が含まれています。

以下に、時刻の加算と減算の例を示します。

#include <stdio.h>
#include <time.h>
int main() {
    struct tm time = {0}; // 初期化
    time.tm_hour = 12; // 時を設定
    time.tm_min = 30; // 分を設定
    time.tm_sec = 0; // 秒を設定
    // 1時間後の時刻を計算
    time_t nextHour = mktime(&time);
    struct tm* nextTime = localtime(&nextHour);
    printf("1時間後の時刻:%d時%d分%d秒\n", nextTime->tm_hour, nextTime->tm_min, nextTime->tm_sec);
    // 1時間前の時刻を計算
    time_t prevHour = mktime(&time);
    struct tm* prevTime = localtime(&prevHour);
    printf("1時間前の時刻:%d時%d分%d秒\n", prevTime->tm_hour, prevTime->tm_min, prevTime->tm_sec);
    return 0;
}

上記のコードでは、struct tmを使用して時刻を設定し、mktime関数を使用してtime_t型の時刻に変換しています。

その後、localtime関数を使用してstruct tm型に戻し、計算結果を表示しています。

日時の差分の計算

日時の差分を計算するには、time_t型の日時を比較する方法があります。

差分を計算するためには、2つの日時をtime_t型に変換し、その差を計算します。

以下に、日時の差分の計算の例を示します。

#include <stdio.h>
#include <time.h>
int main() {
    struct tm start = {0}; // 初期化
    start.tm_year = 2022 - 1900; // 年を設定(1900年からの経過年数)
    start.tm_mon = 0; // 月を設定(0から11の範囲で指定)
    start.tm_mday = 1; // 日を設定
    start.tm_hour = 0; // 時を設定
    start.tm_min = 0; // 分を設定
    start.tm_sec = 0; // 秒を設定
    struct tm end = {0}; // 初期化
    end.tm_year = 2022 - 1900; // 年を設定(1900年からの経過年数)
    end.tm_mon = 0; // 月を設定(0から11の範囲で指定)
    end.tm_mday = 2; // 日を設定
    end.tm_hour = 12; // 時を設定
    end.tm_min = 0; // 分を設定
    end.tm_sec = 0; // 秒を設定
    time_t startTime = mktime(&start);
    time_t endTime = mktime(&end);
    // 日時の差分を計算
    time_t diff = difftime(endTime, startTime);
    printf("日時の差分:%ld秒\n", diff);
    return 0;
}

上記のコードでは、2つの日時をstruct tmを使用して設定し、mktime関数を使用してtime_t型に変換しています。

その後、difftime関数を使用して差分を計算し、結果を表示しています。

以上が、C言語で日時の計算を行う方法の例です。

日付の加算・減算、時刻の加算・減算、日時の差分の計算など、必要な操作に応じて適切な関数やデータ型を使用してください。

目次から探す