タイトルの通り、連続した日付を取得する要件があった。
指定したした回数分日付を作成しなければならなかった。
しかし、日付をただ加算していくだけでは、不正な日付ができ続けるだけだった。
結果、欲しい結果を手に入れられたので、メモ。
Java7で確認。
以下、ソースコード
- import java.util.Calendar;
- public class Test2_1 {
- /**
- * @param args
- */
- public static void main(String[] args) {
- // 年月日を設定
- int year = 2015;
- int month = 8;
- int day = 31;
- // 作成する日数
- int loopCount = 32;
- Calendar c = Calendar.getInstance();
- // 不正な日付でもOK
- c.setLenient(true);
- try {
- for(int i = 0;i<loopCount;i++){
- c.set(year, month - 1, day+i);
- System.out.println(c.get(Calendar.YEAR) + "/" + (c.get(Calendar.MONTH) + 1)+ "/" + c.get(Calendar.DATE));
- }
- } catch (IllegalArgumentException e) {
- // 不正な日付の場合の処理
- }
- }
- }
出力結果
2015/8/31
2015/9/1
2015/9/2
2015/9/3
2015/9/4
2015/9/5
2015/9/6
2015/9/7
2015/9/8
2015/9/9
2015/9/10
2015/9/11
2015/9/12
2015/9/13
2015/9/14
2015/9/15
2015/9/16
2015/9/17
2015/9/18
2015/9/19
2015/9/20
2015/9/21
2015/9/22
2015/9/23
2015/9/24
2015/9/25
2015/9/26
2015/9/27
2015/9/28
2015/9/29
2015/9/30
2015/10/1
Calendarにsetする時に月を-1して、取得する時に+1するのがミソ。
最初から±0で書くと、本来欲しかった月として計算されないので、必ず必要。
月をまたいだらちゃんと次の月になっているので、出力結果としては問題なし。
こちらからは以上です。
合わせて読みたい