しかかりちゅうの最終章
Integer startDate = 200904とかそんな感じで取得してくる; Integer endDate = 上同様; //月初 Calendar startCal = Calendar.getInstance(); startCal.set(Calendar.YEAR, startDate/100); startCal.set(Calendar.MONTH, startDate%100 - 1); int firstDate = startCal.getActualMinimum(Calendar.DATE); startCal.set(Calendar.DATE, firstDate); SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy年MM月dd日"); System.out.println(dateFormat.format(startCal.getTime())); //月末 Calendar endCal = Calendar.getInstance(); endCal.set(Calendar.YEAR, endDate/100); endCal.set(Calendar.MONTH, endDate%100 - 1); int lastDate = endCal.getActualMaximum(Calendar.DATE); endCal.set(Calendar.DATE, lastDate); System.out.println(dateFormat.format(endCal.getTime()));
なんということでしょう、こんなにおかしなコードが匠の手によって次のようなメソッドに生まれ変わりました
//月初 public static String getStartDate(Integer yyyyMM) throws ParseException { String date = String.valueOf(yyyyMM) + "01"; Date start = new SimpleDateFormat("yyyyMMdd").parse(date); return new SimpleDateFormat("yyyy年M月d日").format(start); } //月末 public static String getEndDate(Integer yyyyMM) throws ParseException { String date = String.valueOf(yyyyMM) + "01"; Date start = new SimpleDateFormat("yyyyMMdd").parse(date); Calendar cal = Calendar.getInstance(); cal.setTime(start); cal.add(Calendar.MONTH, 1); cal.add(Calendar.DATE, -1); return new SimpleDateFormat("yyyy年M月d日").format(cal.getTime());
(しかし実際つかったのはチームの方が過去に作られたメソッドだったという)