본문 바로가기

dev/languages

[Java] '입력 받은' 달의 시작 요일과 마지막 날짜 구하기

반응형

 

 

 

 

사용자에게 연도와 월을 입력 받아
원하는 달의 1일의 요일마지막 날짜를 구해보자.

 

 

 

1. 연도와 월 입력 받기

다음 단계에서 parse를 이용할 것이므로 String 타입으로 입력 받는다.

Scanner scan = new Scanner(System.in);
String year, month;

System.out.print("연도 입력: ");
year = scan.next();
System.out.print("월 입력: ");
month = scan.next();

 

 

 

2. SimpleDateFormat의 parse 이용해 형변환

SimpleDateFormat 객체를 생성해 입력 받은 연도와 월의 형식을 명시한다.

parse는 String 타입의 값을 Date 타입으로 변환시켜 준다.

parse를 사용할 때는 예외처리를 위해 클래스명 옆에 throws ParseException 적어주는 것 잊지 말자.

//String -> Date 형변환해서 Date 객체인 date에 저장
SimpleDateFormat sdf = new SimpleDateFormat("yyyyMM");
Date date = sdf.parse(year + month);

 

 

 

3. Calendar 객체 만들어 date 넣어주기

Calendar 객체 cal을 생성한다.

Calendar는 추상클래스 Abstract Class이므로 new 연산자로 생성할 수 없다.

Calendar의 Sub Class인 GregorianCalendar를 이용하자.

생성한 수 setTime으로 아까 저장한 date 값을 cal에 넣어준다.

//Calendar 객체 cal의 날짜를 date에 맞춤
Calendar cal = new GregorianCalendar();
cal.setTime(date);

 

 

 

4. 1일의 요일과 마지막 날짜 구하기

Calendar 메소드 get과 getActualMaximum에 적절한 상수를 넣어 원하는 값을 구해준다.

DAY_OF_WEEK 상수는 일요일 1, 월요일 2, 화요일 3, ... 이런 식으로 값을 반환한다.

int firstDay, lastDay;

//cal에 set된 월의 요일과 날짜 구하기

//1. 1일의 요일
firstDay = cal.get(Calendar.DAY_OF_WEEK);
	//DAY_OF_WEEK 상수는 일요일이 1로 되어 있음

//2. 마지막 날짜
lastDay = cal.getActualMaximum(Calendar.DATE);

 

 

 

 

 


참고글

🔗 https://stackoverflow.com/questions/41697143/how-to-get-last-day-of-the-month-for-the-given-date

반응형