Skip to content
coooldoggy.dev

현재 월의 시작일과 마지막일 구하기

Java1 min read

날짜를 이용해 검색하는 화면에서 Default로 현재 월의 시작일과 마지막일을 넣어 검색하고자 할 때, 원하는 DateFormat에 맞춰 출력하는 법을 찾지 못해 헤매이다 여러방법을 시도한 끝에 성공하였다.

간단한 문제이지만 Calendar와 Date를 사용할때 마다 헷갈린다.. (추후에 정리해둬야 할 듯)

단순히 시작일과 마지막일만을 구하는 문제였다면 간단했겠지만, 시작일과 마지막일을 구하고 그 값을 view에 보여줘야 하기 때문에

  1. 각각 해당하는 값으로 캘린더를 설정한 후

  2. SimpleDateFormat을 이용하여 포맷을 변경한다.

  3. 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 }