— Java — 1 min read
날짜를 이용해 검색하는 화면에서 Default로 현재 월의 시작일과 마지막일을 넣어 검색하고자 할 때, 원하는 DateFormat에 맞춰 출력하는 법을 찾지 못해 헤매이다 여러방법을 시도한 끝에 성공하였다.
간단한 문제이지만 Calendar와 Date를 사용할때 마다 헷갈린다.. (추후에 정리해둬야 할 듯)
단순히 시작일과 마지막일만을 구하는 문제였다면 간단했겠지만, 시작일과 마지막일을 구하고 그 값을 view에 보여줘야 하기 때문에
각각 해당하는 값으로 캘린더를 설정한 후
SimpleDateFormat을 이용하여 포맷을 변경한다.
view에 세팅한다.
의 과정을 거쳤다.
1Calendar calendar = Calendar.getInstance();2 3 //현재 날짜로 설정4 int year = calendar.get(Calendar.YEAR);5 int month = calendar.get(Calendar.MONTH);6 7 //현재 달의 시작일과 마지막일 구하기8 int start = calendar.getActualMinimum(Calendar.DAY_OF_MONTH);9 int end = calendar.getActualMaximum(Calendar.DAY_OF_MONTH);10 11 //DateFormat에 맞춰 String에 담기12 13 SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd", Locale.KOREA);14 calendar.set(year, month, start);15 String startdate = dateFormat.format(calendar.getTime());16 calendar.set(year, month, end);17 String enddate = dateFormat.format(calendar.getTime());
before : 오늘로 부터 몇일 전 날짜 (마이너스 값을 넣어줘야한다. ex: 3일 전이면 -3) after : 오늘로 부터 몇일 후 날짜
1private void initCalendar(int before, int after) {2 Calendar calendar = Calendar.getInstance();3 calendar.add(Calendar.DATE , before);4 Date date = calendar.getTime();5 SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd", Locale.KOREA);6 String startdate = dateFormat.format(date);7 calendar.add(Calendar.DATE , after);8 date = calendar.getTime();9 String enddate = dateFormat.format(date);10 }