Notice
Recent Posts
Recent Comments
관리 메뉴

Developer Gonie

[3주차] 63. 날짜, 일자, 시간 정보를 얻는 Calendar 클래스 본문

K-DigitalTraining 강의/1. Java

[3주차] 63. 날짜, 일자, 시간 정보를 얻는 Calendar 클래스

이대곤 2022. 6. 2. 12:24

* Calendar 클래스는 생성자가 protected 접근제어자여서 new로 직접 객체를 생성할 수 없는데,
  getInstance() 메소드를 통해 객체를 생성해올 수 있다는 것을 알고 사용해야한다.

코드

import java.util.Calendar;

public class Ex08_08_Calendar {
	public static void main(String[] args) {
		// Calendar cal = new Carlenar(); 이와 같이 바로 객체를 생성하는 것이 불가함.
		// Calendar의 생성자는 protected로 접근제어자가 지정되어 있기 때문에 접근이 불가능해 객체를 생성할 수 없다.
		// 대신에 Calendar 는 멤버함수로 static으로 getInstance 메서드를 가지고 있어 만들어진 객체를 받을 수 있음.

		// Calendar 객체생성
		Calendar cal = Calendar.getInstance();
		System.out.println(cal.toString()); // Calendar는 toString을 오버라이딩 해두어 주소가 아닌 날짜정보 값이 출력됨
		System.out.println();

		// index를 지정하여 객체가 가지고 있는 시간정보 배열에서 값을 가져올 수 있음
		System.out.println(cal.get(1));
		System.out.println();


		// 클래스 내부에 final 상수로 다음과 같은 이름이 매칭되어 있어 아래 방식으로 더욱 편리하게 사용가능
		System.out.println(cal.get(Calendar.YEAR) + "년");
		System.out.println(cal.get(Calendar.MONTH) + 1 + "월"); // 주의! +1 해줘야 원하는 월이 나온다. 숫자는 0부터 1월이라서
		System.out.println(cal.get(Calendar.DATE) + "일");
		System.out.println();

		// 현재시각 출력
		int ampm = cal.get(Calendar.AM_PM); // 오전이면 0, 오후이면 1 반환

		if (ampm == Calendar.AM) { // ampm == 0 과 같지만 더욱 가독성 좋은 코드
			System.out.print("현재 시간은 AM: ");
		} else {
			System.out.print("현재 시간은 PM: ");
		}
		
		System.out.println(
				cal.get(Calendar.HOUR) + "시" + cal.get(Calendar.MINUTE) + "분" + cal.get(Calendar.SECOND) + "초");
		System.out.println();

		// 오늘의 요일 출력
		System.out.println(cal.get(Calendar.DAY_OF_WEEK)); // 일:1, 월:2, 화:3, ...
		String[] week = { " ", "일", "월", "화", "수", "목", "금", "토" };
		System.out.println(week[cal.get(Calendar.DAY_OF_WEEK)] + "요일");

	}
}

실행결과

java.util.GregorianCalendar[time=1653965159455,areFieldsSet=true,areAllFieldsSet=true,lenient=true,zone=sun.util.calendar.ZoneInfo[id="Asia/Seoul",offset=32400000,dstSavings=0,useDaylight=false,transitions=30,lastRule=null],firstDayOfWeek=1,minimalDaysInFirstWeek=1,ERA=1,YEAR=2022,MONTH=4,WEEK_OF_YEAR=23,WEEK_OF_MONTH=5,DAY_OF_MONTH=31,DAY_OF_YEAR=151,DAY_OF_WEEK=3,DAY_OF_WEEK_IN_MONTH=5,AM_PM=0,HOUR=11,HOUR_OF_DAY=11,MINUTE=45,SECOND=59,MILLISECOND=455,ZONE_OFFSET=32400000,DST_OFFSET=0]
2022
2022년
5월
31일
현재 시간은 AM: 11시45분59초
3일
화요일
Comments