システム日付や任意の日付に対して加算や減算を行うには、Calendarクラスを使用する。
下のサンプルでは、システム日付を保持したCalendarオブジェクトに対して日数などの加減算を行い、結果をyyyyMMdd形式の文字列に変換しております。
ちなみにフォーマット変換にはSimpleDateFormatクラスを使用しているので、コンストラクタに渡す書式文字列によって、好きな形式に変換することができます…と。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
// フォーマット変換用のSimpleDateFormatオブジェクトを生成 DateFormat df = new SimpleDateFormat("yyyyMMdd"); // 現在日時を保持するCalendarオブジェクトを生成 Calendar cal = Calendar.getInstance(); // 現在日時をyyyyMMdd形式で出力(結果:20130814) System.out.println(df.format(cal.getTime())); // 10日を加算 cal.add(Calendar.DATE, 10); // 結果をyyyyMMdd形式で出力(結果:20130824) System.out.println(df.format(cal.getTime())); // 10ヶ月を減算 cal.add(Calendar.MONTH, -10); // 結果をyyyyMMdd形式で出力(結果:20121014) System.out.println(df.format(cal.getTime())); // 1年を加算 cal.add(Calendar.YEAR, 1); // 結果をyyyyMMdd形式で出力(結果:20140814) System.out.println(df.format(cal.getTime())); |
ちなみに、Calendarオブジェクトにはシステム日付だけでなく任意の日付を設定することももちろんできる。
ただし要注意ポイントとして、「月」に設定する値は1~12ではなく0~11を指定するので、例えば1月を設定したい場合は0、12月を設定したい場合は11と指定しないとダメ。ややこしい…。
1 2 3 4 5 6 7 8 9 10 |
// フォーマット変換用のSimpleDateFormatオブジェクトを生成 DateFormat df = new SimpleDateFormat("yyyy/MM/dd"); // 現在日時を保持するCalendarオブジェクトを生成 Calendar cal = Calendar.getInstance(); // Calendarオブジェクトに任意の日付を設定 cal.set(2013, 11, 15); // 結果をyyyy/MM/dd形式で出力(結果:2013/12/15) System.out.println(df.format(cal.getTime())); |
もちろん、任意の日付に対しても同様の方法で計算を行うことができます。