- ベストアンサー
ある年月の月間日数を取得する方法を教えて下さい。
年月から、月間日数を取得する方法を教えて下さい。 例えば、「2003年7月」は、「31日間」あると思いますが、 その「31日間」を取得する方法を教えて下さい。 「2003年7月」を表すDate型オブジェクトを引数に 月間日数を取得したいです。 Javaで実現する方法をお願いします。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
java.util.Calendar#getActualMaximum() を使用して下さい。 http://www.okweb.ne.jp/kotaeru.php3?q=595271 上記の問題(解決されたのでしょうか?)もそうですが、 この手の日付の変更や情報の取得をするには、java.util.Calnedar を継承した java.util.GregorianCalendar クラスを用います。 API リファレンスをご覧になれば分かると思いますが、この手の問題を解決するメソッドが一通り揃っています。
その他の回答 (2)
- arukamun
- ベストアンサー率35% (842/2394)
こんばんは 訂正です。 誤 return (year+year/4-year/100+year/400+(month*13+8)/5+1)%7 ; 正 return (year+year/4-year/100+year/400+(month*13+8)/5+day)%7 ;
- arukamun
- ベストアンサー率35% (842/2394)
こんばんは 曜日鑑別法というのをご存じでしょうか? int weekDay(int year,int month,int day) { if ( month < 3 ){ year -- ; month += 12 ; } return (year+year/4-year/100+year/400+(month*13+8)/5+1)%7 ; } この関数に年、月、日を入れると、曜日に該当する数値を返します。 0:日曜日 1:月曜日 2:火曜日 3:水曜日 4:木曜日 5:金曜日 6:土曜日 この関数を使って、今月の1日と次月の1日の差分を計算します。 i = weekDay(year,month,1); if ( month < 12 ){ month++ ; } else { year++ ; month = 1 ; } j = weekDay(year,month,1); if ( i <= j ){ return 28+j-i ; } else { return 35+j-i ; } 当方Javaの環境が手元に無いので、デバッグしていません。 また、Data型からyearやmonthを取り出す方法は、お任せします。