【C言語】2つの日時の大小を比較する方法

この記事では、C言語で2つの日時を比較する方法について解説します。

初心者の方にも分かりやすく解説していきますので、ぜひ参考にしてください。

目次から探す

日時の比較方法

日時の比較は、C言語でよく行われる操作です。

ここでは、2つの日時の大小を比較する方法について説明します。

方法1: 構造体を使った比較

C言語では、日時を表すために構造体を使用することができます。

一般的には、struct tmという構造体が使われます。

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

以下に、2つの日時を比較するためのサンプルコードを示します。

#include <stdio.h>
#include <time.h>
int main() {
    struct tm date1, date2;
    // date1の設定
    date1.tm_year = 2022 - 1900;  // 年は1900年からの経過年数で指定するため、2022年から1900を引く
    date1.tm_mon = 0;  // 月は0から始まるため、1月を表すには0を指定する
    date1.tm_mday = 1;  // 日
    date1.tm_hour = 12;  // 時
    date1.tm_min = 0;  // 分
    date1.tm_sec = 0;  // 秒
    // date2の設定
    date2.tm_year = 2021 - 1900;
    date2.tm_mon = 11;  // 12月
    date2.tm_mday = 31;
    date2.tm_hour = 23;
    date2.tm_min = 59;
    date2.tm_sec = 59;
    // 日時の比較
    if (mktime(&date1) > mktime(&date2)) {
        printf("date1の方が大きいです\n");
    } else if (mktime(&date1) < mktime(&date2)) {
        printf("date2の方が大きいです\n");
    } else {
        printf("date1とdate2は同じです\n");
    }
    return 0;
}

上記のコードでは、mktime()関数を使用して、struct tm型の日時をエポック秒に変換しています。

そして、エポック秒同士の比較を行っています。

比較結果に応じて、適切なメッセージを出力しています。

方法2: エポック秒を使った比較

方法1では、構造体を使用して日時を比較しましたが、もう1つの方法として、エポック秒を使った比較もあります。

エポック秒とは、1970年1月1日午前0時からの経過秒数のことです。

以下に、エポック秒を使った日時の比較のサンプルコードを示します。

#include <stdio.h>
#include <time.h>
int main() {
    time_t epoch1, epoch2;
    // epoch1の設定
    struct tm date1;
    date1.tm_year = 2022 - 1900;
    date1.tm_mon = 0;
    date1.tm_mday = 1;
    date1.tm_hour = 12;
    date1.tm_min = 0;
    date1.tm_sec = 0;
    epoch1 = mktime(&date1);
    // epoch2の設定
    struct tm date2;
    date2.tm_year = 2021 - 1900;
    date2.tm_mon = 11;
    date2.tm_mday = 31;
    date2.tm_hour = 23;
    date2.tm_min = 59;
    date2.tm_sec = 59;
    epoch2 = mktime(&date2);
    // 日時の比較
    if (epoch1 > epoch2) {
        printf("epoch1の方が大きいです\n");
    } else if (epoch1 < epoch2) {
        printf("epoch2の方が大きいです\n");
    } else {
        printf("epoch1とepoch2は同じです\n");
    }
    return 0;
}

上記のコードでは、mktime()関数を使用して、struct tm型の日時をエポック秒に変換しています。

そして、エポック秒同士の比較を行っています。

比較結果に応じて、適切なメッセージを出力しています。

以上が、C言語で2つの日時を比較する方法についての説明です。

構造体を使った比較とエポック秒を使った比較の2つの方法がありますので、適宜使い分けてください。

目次から探す