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

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

初心者の方でもわかりやすく、サンプルコードも提供していますので、ぜひ参考にしてください。

目次から探す

日付の比較方法

日付を比較する方法はいくつかあります。

ここでは、C言語で日付を比較するための3つの方法を紹介します。

方法1: 日付を整数として比較する

日付を整数として比較する方法は、日付を年、月、日の3つの要素に分解し、それぞれの要素を比較する方法です。

具体的な手順は以下の通りです。

  1. 比較したい2つの日付を整数として取得します。
  2. それぞれの日付を年、月、日に分解します。
  3. 年を比較します。

年が異なる場合は、年の大小で日付を比較することができます。

  1. 年が同じ場合は、月を比較します。

月が異なる場合は、月の大小で日付を比較することができます。

  1. 月も同じ場合は、日を比較します。

日が異なる場合は、日の大小で日付を比較することができます。

以下に、具体的なコード例を示します。

#include <stdio.h>
int compareDates(int year1, int month1, int day1, int year2, int month2, int day2) {
    if (year1 != year2) {
        return year1 - year2;
    }
    if (month1 != month2) {
        return month1 - month2;
    }
    return day1 - day2;
}
int main() {
    int year1 = 2022;
    int month1 = 1;
    int day1 = 1;
    
    int year2 = 2021;
    int month2 = 12;
    int day2 = 31;
    
    int result = compareDates(year1, month1, day1, year2, month2, day2);
    
    if (result > 0) {
        printf("日付1の方が新しいです。\n");
    } else if (result < 0) {
        printf("日付2の方が新しいです。\n");
    } else {
        printf("日付1と日付2は同じです。\n");
    }
    
    return 0;
}

上記のコードでは、compareDates関数を定義しています。

この関数は、2つの日付を比較し、結果を整数で返します。

main関数では、比較したい2つの日付を設定し、compareDates関数を呼び出して結果を表示しています。

実行結果は以下の通りです。

日付1の方が新しいです。

方法2: 日付を構造体として比較する

日付を構造体として比較する方法は、日付を年、月、日の3つの要素を持つ構造体で表現し、その構造体同士を比較する方法です。

具体的な手順は以下の通りです。

  1. 比較したい2つの日付を構造体として取得します。
  2. 構造体同士を比較します。

比較演算子(<、>、==)を使用して、年、月、日の順に比較します。

以下に、具体的なコード例を示します。

#include <stdio.h>
typedef struct {
    int year;
    int month;
    int day;
} Date;
int compareDates(Date date1, Date date2) {
    if (date1.year != date2.year) {
        return date1.year - date2.year;
    }
    if (date1.month != date2.month) {
        return date1.month - date2.month;
    }
    return date1.day - date2.day;
}
int main() {
    Date date1 = {2022, 1, 1};
    Date date2 = {2021, 12, 31};
    
    int result = compareDates(date1, date2);
    
    if (result > 0) {
        printf("日付1の方が新しいです。\n");
    } else if (result < 0) {
        printf("日付2の方が新しいです。\n");
    } else {
        printf("日付1と日付2は同じです。\n");
    }
    
    return 0;
}

上記のコードでは、Dateという構造体を定義しています。

この構造体は、年、月、日の3つの要素を持ちます。

compareDates関数は、2つのDate型の変数を比較し、結果を整数で返します。

main関数では、比較したい2つの日付を設定し、compareDates関数を呼び出して結果を表示しています。

実行結果は以下の通りです。

日付1の方が新しいです。

方法3: 日付を文字列として比較する

日付を文字列として比較する方法は、日付を文字列として表現し、文字列同士を比較する方法です。

具体的な手順は以下の通りです。

  1. 比較したい2つの日付を文字列として取得します。
  2. 文字列同士を比較します。

比較関数(strcmp)を使用して、文字列を比較します。

以下に、具体的なコード例を示します。

#include <stdio.h>
#include <string.h>
int compareDates(char* date1, char* date2) {
    return strcmp(date1, date2);
}
int main() {
    char* date1 = "2022-01-01";
    char* date2 = "2021-12-31";
    
    int result = compareDates(date1, date2);
    
    if (result > 0) {
        printf("日付1の方が新しいです。\n");
    } else if (result < 0) {
        printf("日付2の方が新しいです。\n");
    } else {
        printf("日付1と日付2は同じです。\n");
    }
    
    return 0;
}

上記のコードでは、compareDates関数を定義しています。

この関数は、2つの文字列を比較し、結果を整数で返します。

main関数では、比較したい2つの日付を設定し、compareDates関数を呼び出して結果を表示しています。

実行結果は以下の通りです。

日付1の方が新しいです。

以上が、C言語で日付を比較する3つの方法の説明となります。

それぞれの方法には特徴がありますので、使いやすい方法を選んでください。

目次から探す