• ベストアンサー

対象月が何日まであるか調べたい。

C#環境です。 たとえば、2000年2月の月末日(最終日)が何日なのかを 調べたいと思っているのですが、そのような関数などが ありましたら教えていただけないでしょうか? 現在、コンストで1月は31日が最終日…と設定していますが、 2月に関してはうるう年の絡みもあるので、入力年月から 最終日が調べられたらな…と思っています。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.2

年が4で割り切れない時は平年(2月は28日まで) 年が4で割り切れて100で割り切れない時は閏年(2月は29日まで) 年が4で割り切れて100で割り切れて400で割り切れない時は平年(2月は28日まで) 年が4で割り切れて100で割り切れて400で割り切れた時は閏年(2月は29日まで) プログラム例 #include <stdio.h> void main(void) { int Year; int Feb; for(;;){ printf("Year ?"); if (scanf("%d",&Year) != 1) break; Feb = Year % 4 ? 28 : Year % 100 ? 29 : Year % 400 ? 28 : 29; printf("Feb = %d\n",Feb); } } なお「年が1901から2099の間に限る(つまり、2100年まで使う事はないと限定した場合)」のであれば 年が4で割り切れない時は平年(2月は28日まで) 年が4で割り切れた時は閏年(2月は29日まで) で構いません。 これは「年が1901から2099の間は、閏年は必ず4年に1回」と「単純化」できるからです。 蛇足ですが、現在パソコン等に用いられている「カレンダーICチップ」は「2100年まで使い続ける前に寿命が来る筈だから、2100年までは使われない」と言う前提で「閏年は4年に1回」として設計されています(と言うか、年が00~99の2桁しかないICチップが多いので、99年の次は00年になってしまい、2000年と2100年が区別できないICチップが多い) この「2100年問題」は、90年後に問題化するかも知れません。 更に蛇足ですが「指定した年月日が何曜日か?」は「ツェラーの公式」で求まります。

その他の回答 (1)

  • andy_kun
  • ベストアンサー率23% (64/274)
回答No.1

”うるう年 判定 C#”で検索すればすぐ分かると思うけど… 一応 DateTime.IsLeapYear これを使えばいいらしい…

関連するQ&A