javaのCalendar型を使って日付の操作をしています。
しかし、なんだかセットした日付とゲットした日付がずれるな、と思い、今年度の全ての月末日を取得してみました。
そうすると、実行結果のようになってしまい...
なぜこのような出力になるのでしょうか?
java
1public static void main(String[] args) { 2 3 Calendar cal = Calendar.getInstance(); 4 cal.clear(); 5 6 cal.set(2018, 1, 31); 7 8 System.out.print("1/31 -> YEAR: " + cal.get(Calendar.YEAR)); 9 System.out.print(" MONTH:" + (cal.get(Calendar.MONTH) + 1)); 10 System.out.println(" DATE:" + cal.get(Calendar.DATE)); 11 12 cal.set(2018, 2, 28); 13 14 System.out.print("2/28 -> YEAR: " + cal.get(Calendar.YEAR)); 15 System.out.print(" MONTH:" + (cal.get(Calendar.MONTH) + 1)); 16 System.out.println(" DATE:" + cal.get(Calendar.DATE)); 17 18 cal.set(2018, 3, 31); 19 20 System.out.print("3/31 -> YEAR: " + cal.get(Calendar.YEAR)); 21 System.out.print(" MONTH:" + (cal.get(Calendar.MONTH) + 1)); 22 System.out.println(" DATE:" + cal.get(Calendar.DATE)); 23 24 cal.set(2018, 4, 30); 25 26 System.out.print("4/30 -> YEAR: " + cal.get(Calendar.YEAR)); 27 System.out.print(" MONTH:" + (cal.get(Calendar.MONTH) + 1)); 28 System.out.println(" DATE:" + cal.get(Calendar.DATE)); 29 30 cal.set(2018, 5, 31); 31 32 System.out.print("5/31 -> YEAR: " + cal.get(Calendar.YEAR)); 33 System.out.print(" MONTH:" + (cal.get(Calendar.MONTH) + 1)); 34 System.out.println(" DATE:" + cal.get(Calendar.DATE)); 35 36 cal.set(2018, 6, 30); 37 38 System.out.print("6/30 -> YEAR: " + cal.get(Calendar.YEAR)); 39 System.out.print(" MONTH:" + (cal.get(Calendar.MONTH) + 1)); 40 System.out.println(" DATE:" + cal.get(Calendar.DATE)); 41 42 cal.set(2018, 7, 31); 43 44 System.out.print("7/31 -> YEAR: " + cal.get(Calendar.YEAR)); 45 System.out.print(" MONTH:" + (cal.get(Calendar.MONTH) + 1)); 46 System.out.println(" DATE:" + cal.get(Calendar.DATE)); 47 48 cal.set(2018, 8, 31); 49 50 System.out.print("8/31 -> YEAR: " + cal.get(Calendar.YEAR)); 51 System.out.print(" MONTH:" + (cal.get(Calendar.MONTH) + 1)); 52 System.out.println(" DATE:" + cal.get(Calendar.DATE)); 53 54 cal.set(2018, 9, 30); 55 56 System.out.print("9/30 -> YEAR: " + cal.get(Calendar.YEAR)); 57 System.out.print(" MONTH:" + (cal.get(Calendar.MONTH) + 1)); 58 System.out.println(" DATE:" + cal.get(Calendar.DATE)); 59 60 cal.set(2018, 10, 31); 61 62 System.out.print("10/31 -> YEAR: " + cal.get(Calendar.YEAR)); 63 System.out.print(" MONTH:" + (cal.get(Calendar.MONTH) + 1)); 64 System.out.println(" DATE:" + cal.get(Calendar.DATE)); 65 66 cal.set(2018, 11, 30); 67 68 System.out.print("11/30 -> YEAR: " + cal.get(Calendar.YEAR)); 69 System.out.print(" MONTH:" + (cal.get(Calendar.MONTH) + 1)); 70 System.out.println(" DATE:" + cal.get(Calendar.DATE)); 71 72 cal.set(2018, 12, 31); 73 74 System.out.print("12/31 -> YEAR: " + cal.get(Calendar.YEAR)); 75 System.out.print(" MONTH:" + (cal.get(Calendar.MONTH) + 1)); 76 System.out.println(" DATE:" + cal.get(Calendar.DATE)); 77 }
1/31 -> YEAR: 2018 MONTH:3 DATE:3 2/28 -> YEAR: 2018 MONTH:3 DATE:28 3/31 -> YEAR: 2018 MONTH:5 DATE:1 4/30 -> YEAR: 2018 MONTH:5 DATE:30 5/31 -> YEAR: 2018 MONTH:7 DATE:1 6/30 -> YEAR: 2018 MONTH:7 DATE:30 7/31 -> YEAR: 2018 MONTH:8 DATE:31 8/31 -> YEAR: 2018 MONTH:10 DATE:1 9/30 -> YEAR: 2018 MONTH:10 DATE:30 10/31 -> YEAR: 2018 MONTH:12 DATE:1 11/30 -> YEAR: 2018 MONTH:12 DATE:30 12/31 -> YEAR: 2019 MONTH:1 DATE:31

回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/09/29 13:59
2018/09/29 14:00
2018/09/29 14:03
2018/09/29 14:08
2018/09/29 14:09