この記事では、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つの方法がありますので、適宜使い分けてください。