If you can dream it, you can do it.

元タイトル「北の大地のIT技術屋より」

Javaで連続した日付を取得する方法

 

タイトルの通り、連続した日付を取得する要件があった。

指定したした回数分日付を作成しなければならなかった。

しかし、日付をただ加算していくだけでは、不正な日付ができ続けるだけだった。

結果、欲しい結果を手に入れられたので、メモ。

 

Java7で確認。

 

 

以下、ソースコード

 

 

  1. import java.util.Calendar;
  2. public class Test2_1 {
  3.     /**
  4.      * @param args
  5.      */
  6.     public static void main(String[] args) {
  7.         // 年月日を設定
  8.         int year = 2015;
  9.         int month = 8;
  10.         int day = 31;
  11.         // 作成する日数
  12.         int loopCount = 32;
  13.         Calendar c = Calendar.getInstance();
  14.         // 不正な日付でもOK
  15.         c.setLenient(true);
  16.         try {
  17.          for(int i = 0;i<loopCount;i++){
  18.              c.set(year, month - 1, day+i);
  19.              System.out.println(c.get(Calendar.YEAR) + "/" + (c.get(Calendar.MONTH) + 1)+ "/" + c.get(Calendar.DATE));
  20.          }
  21.         } catch (IllegalArgumentException e) {
  22.          // 不正な日付の場合の処理
  23.         }
  24.     }
  25. }

 

出力結果

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で書くと、本来欲しかった月として計算されないので、必ず必要。

 

月をまたいだらちゃんと次の月になっているので、出力結果としては問題なし。

 

こちらからは以上です。

 

スッキリわかるJava入門 第2版

スッキリわかるJava入門 第2版

 

 

合わせて読みたい