一般社団法人 全国個人事業主支援協会

COLUMN コラム

閏年を考慮した日時計算プログラムを何度かに分けて載せる予定です。
(中身は、むかしANCI-Cで書いたコードをC++クラスで囲っただけです)

今回は共通部。

//—————————————————————————–
// 1.関数名 : ChkLeapYear
// 2.機能 : 閏年を判定する
// 3.引数 : iYear 年
// 4.戻り値 : 閏年=1
// : 閏年以外=0
//—————————————————————————–
int CAdjustDate::ChkLeapYear(int iYear)
{
if (iYear % 100) {
// 100で割り切れない
if (iYear % 4) {
// 4で割り切れない
return 0;
}
else {
// 4で割り切れる
return 1;
}
}
else {
// 100で割り切れる
if (iYear % 400) {
// 400で割り切れない
return 0;
}
else {
// 400で割り切れる
return 1;
}
}
}

//—————————————————————————–
// 1.関数名 : GetMonthEndDay
// 2.機能 : 指定年月の末日取得
// 3.引数 : iYear 年
// : iMonth 月
// 4.戻り値 : 指定年月の末日
//—————————————————————————–
int CAdjustDate::GetMonthEndDay(int iYear, int iMonth)
{
static int m_iMonthEndDay[12] =
// 01 02 03 04 05 06 07 08 09 10 11 12
{ 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };

if (iMonth == 2) {
return (m_iMonthEndDay[iMonth – 1] + ChkLeapYear(iYear));
}
else {
return (m_iMonthEndDay[iMonth – 1]);
}
}

The following two tabs change content below.

浅田 康二

最新記事 by 浅田 康二 (全て見る)

この記事をシェアする

  • Twitterでシェア
  • Facebookでシェア
  • LINEでシェア