日時
月末の日付を取得
西暦年と月を指定して月末の日付を求めます。
年と月によって最終日が違います。例えば、閏年(うるうどし)の2月の場合は29日、閏年でない場合は28日です。また、1月は31日、4月は30日のように月によっても違います。
Calenderクラスを使うことで、最終日を簡単に求めることができるので、その方法を紹介します。
方法は以下の通りです。
これで、Calenderに指定西暦年と月の最終日の日付が格納されます。
Javaソースコード
EndOfTheMonth.java
001 002 003 004 005 006 007 008 009 010 011 012 013 014 015 016 017 018 019 020 021 022 023 024 025 026 027 028 029 030 031
import java.util.Calendar; public class EndOfTheMonth { public static void main( String[] args ) { // Calendarクラスのインスタンス生成 Calendar calendar = Calendar.getInstance(); // 西暦年を2000-2002 for ( int year = 2000; year <= 2002; ++ year ) { // 月を1-12 for ( int month = 1; month <= 12; month ++ ) { // 西暦年と月と1日を設定 calendar.set( year, month - 1, 1 ); // 1ヶ月を足す calendar.add( Calendar.MONTH, 1 ); // 1日を引く calendar.add( Calendar.DAY_OF_MONTH, -1 ); // 年月日を変数に代入 int y = calendar.get( Calendar.YEAR ); int m = calendar.get( Calendar.MONTH ) + 1; int d = calendar.get( Calendar.DAY_OF_MONTH ); // 結果をコンソール出力 System.out.println( y + "/" + m + "/" + d ); } } } }
出力結果
2000/1/31 2000/2/29 2000/3/31 2000/4/30 2000/5/31 2000/6/30 2000/7/31 2000/8/31 2000/9/30 2000/10/31 2000/11/30 2000/12/31 2001/1/31 2001/2/28 2001/3/31 2001/4/30 2001/5/31 2001/6/30 2001/7/31 2001/8/31 2001/9/30 2001/10/31 2001/11/30 2001/12/31 2002/1/31 2002/2/28 2002/3/31 2002/4/30 2002/5/31 2002/6/30 2002/7/31 2002/8/31 2002/9/30 2002/10/31 2002/11/30 2002/12/31
Javaソースコードの解説
001
import java.util.Calendar;
003
public class EndOfTheMonth {
クラス名を、EndOfTheMonthとしています。
004
public static void main( String[] args ) {
このmainメソッドからプログラムを実行します。
005 006
// Calendarクラスのインスタンス生成
Calendar calendar = Calendar.getInstance();
Calendar.getInstanceメソッド
public static Calendar getInstance()
・デフォルトのタイムゾーンおよびロケールを使用してカレンダを取得 パラメータ なし 戻り値 デフォルトロケールを持つデフォルトタイムゾーンの現在時刻に基づいたCalendar
008 009
// 西暦年を2000-2002 for ( int year = 2000; year <= 2002; ++ year ) {
010 011
// 月を1-12 for ( int month = 1; month <= 12; month ++ ) {
012 013
// 西暦年と月と1日を設定
calendar.set( year, month - 1, 1 );
西暦年year、月monthの初日をCalendarクラスのsetメソッドで設定しています。月にmonth - 1を渡しているのは、setメソッドの仕様で1月は0、2月は1、…12月は11だからです。
Calendar.getInstanceメソッド
void set( int year, int month, int date )
・カレンダ・フィールドYEAR、MONTH、およびDAY_OF_MONTHの値を設定します。 パラメータ year : 年 month : 月 (0から始まる。0が1月、11が12月) date : 日 戻り値 なし
015 016
// 1ヶ月を足す
calendar.add( Calendar.MONTH, 1 );
addメソッドで、calendarの月に1ヶ月を足しています。
018 019
// 1日を引く
calendar.add( Calendar.DAY_OF_MONTH, -1 );
addメソッドで、calendarの日から1日を引いています。
021 022 023 024
// 年月日を変数に代入 int y = calendar.get( Calendar.YEAR ); int m = calendar.get( Calendar.MONTH ) + 1; int d = calendar.get( Calendar.DAY_OF_MONTH );
026 027
// 結果をコンソール出力 System.out.println( y + "/" + m + "/" + d );
変数y、m、dを半角のスラッシュ'/'で区切って、printlnメソッドでコンソール出力しています。
以上です。