RCIE-ジャンクのコード屋

主に自分のためにコーディングのTIPSを蓄積しています。

(C#)ある月が、何日まであるかを調べる

作ったもの

 例えば2019年2月は28日までありますが、2020年2月は29日まであります。今回はY年M月が何日まであるかを調べる関数を紹介します。

コード

/// <summary>
/// その月が何日まであるか
/// </summary>
/// <param name="year"></param>
/// <param name="month"></param>
/// <returns></returns>
static int DaysOfMonth(int year, int month) {
	DateTime d1 = new DateTime(year, month, 1);
	DateTime d2 = d1.AddDays(50);
	return 51 - d2.Day;
}

使い方

int d2019_2 = DaysOfMonth(2019, 2); // 2019年2月の日数
int d2020_2 = DaysOfMonth(2020, 2); // 2020年2月の日数

解説

 たとえば、
① 2019年2月1日の50日後は、3月23日です。(2月は28日まである)
② 2020年2月1日の50日後は、3月22日です、(2月は29日まである)
③ 2019年4月1日の50日後は、5月21日です。(4月は30日まである)
④ 2019年1月1日の50日後は、2月20日です。(1月は31日まである)
これらの例から、下線部の合計は51であると経験的に分かります。
 一般的に、ある月の50日後が、次の月の X日 だとすると、ある月は 51-X日 まであります。