shokosブログ

プログラミング

しかかりちゅうの最終章

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());


(しかし実際つかったのはチームの方が過去に作られたメソッドだったという)