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

この記事では、C言語を使用して日付の差分を計算する方法について解説します。

初心者の方でも理解しやすい内容となっていますので、ぜひ参考にしてみてください。

目次から探す

日付の差分を計算する方法

日付の差分を計算することは、プログラミングにおいてよく行われるタスクです。

C言語では、日付の差分を計算するためのさまざまな方法があります。

以下では、いくつかのアルゴリズムと具体的なコード例を紹介します。

日付の差分を計算するためのアルゴリズム

日付の差分を計算するためには、まず2つの日付を比較し、その差を求める必要があります。

一般的なアルゴリズムとしては、以下の手順を踏むことができます。

  1. 2つの日付を取得する。
  2. それぞれの日付を年、月、日に分解する。
  3. 2つの日付の年、月、日の差を計算する。
  4. 差を出力する。

以下に、このアルゴリズムを実装したサンプルコードを示します。

#include <stdio.h>
struct Date {
    int year;
    int month;
    int day;
};
int main() {
    struct Date date1, date2;
    int yearDiff, monthDiff, dayDiff;
    // 2つの日付を入力する
    printf("日付1を入力してください(年 月 日):");
    scanf("%d %d %d", &date1.year, &date1.month, &date1.day);
    printf("日付2を入力してください(年 月 日):");
    scanf("%d %d %d", &date2.year, &date2.month, &date2.day);
    // 年の差を計算する
    yearDiff = date2.year - date1.year;
    // 月の差を計算する
    monthDiff = date2.month - date1.month;
    // 日の差を計算する
    dayDiff = date2.day - date1.day;
    // 結果を出力する
    printf("日付の差分: %d年 %dヶ月 %d日\n", yearDiff, monthDiff, dayDiff);
    return 0;
}

このコードでは、struct Dateという構造体を使用して日付を表現しています。

yearDiffmonthDiffdayDiffという変数に差分を格納し、最後に結果を出力しています。

年、月、日の差分を計算する方法

上記のサンプルコードでは、年、月、日の差分をそれぞれ別々に計算していますが、もし年、月、日の差分をまとめて計算したい場合は、以下のようなコードを使用することができます。

#include <stdio.h>
struct Date {
    int year;
    int month;
    int day;
};
int main() {
    struct Date date1, date2, diff;
    // 2つの日付を入力する
    printf("日付1を入力してください(年 月 日):");
    scanf("%d %d %d", &date1.year, &date1.month, &date1.day);
    printf("日付2を入力してください(年 月 日):");
    scanf("%d %d %d", &date2.year, &date2.month, &date2.day);
    // 年の差を計算する
    diff.year = date2.year - date1.year;
    // 月の差を計算する
    diff.month = date2.month - date1.month;
    // 日の差を計算する
    diff.day = date2.day - date1.day;
    // 結果を出力する
    printf("日付の差分: %d年 %dヶ月 %d日\n", diff.year, diff.month, diff.day);
    return 0;
}

このコードでは、diffという構造体を使用して年、月、日の差分をまとめて計算しています。

日付を文字列として扱う場合の差分計算方法

もし日付を文字列として扱いたい場合は、以下のようなコードを使用することができます。

#include <stdio.h>
#include <string.h>
int main() {
    char date1[11], date2[11];
    int year1, month1, day1;
    int year2, month2, day2;
    int yearDiff, monthDiff, dayDiff;
    // 2つの日付を入力する
    printf("日付1を入力してください(YYYY/MM/DD):");
    scanf("%s", date1);
    printf("日付2を入力してください(YYYY/MM/DD):");
    scanf("%s", date2);
    // 年、月、日に分解する
    sscanf(date1, "%d/%d/%d", &year1, &month1, &day1);
    sscanf(date2, "%d/%d/%d", &year2, &month2, &day2);
    // 年の差を計算する
    yearDiff = year2 - year1;
    // 月の差を計算する
    monthDiff = month2 - month1;
    // 日の差を計算する
    dayDiff = day2 - day1;
    // 結果を出力する
    printf("日付の差分: %d年 %dヶ月 %d日\n", yearDiff, monthDiff, dayDiff);
    return 0;
}

このコードでは、date1date2という文字列配列を使用して日付を入力し、sscanf関数を使用して年、月、日に分解しています。

その後、差分を計算し、結果を出力しています。

以上が、C言語で日付の差分を計算する方法についての解説です。

これらのコードを参考にして、日付の差分を計算するプログラムを作成してみてください。

目次から探す