※ Calendar 클래스는 추상 클래스이기 때문에 객체를 생성할 수 없다.
(추상 클래스 : 미완성된 클래스 → 상속을 위해 존재하는 클래스)
Calendar ob = new Calendar();
→ 이와 같은 구문을 통해 인스턴스 생성 불가.
○ Calendar 클래스 객체(인스턴스)를 생성할 수 있는 방법
- Calendar ob1 = Calendar.getInstance();
- Calendar ob2 = new GregorianCalendar();
- GregorianCalendar ob3 = new GregorianCalendar();
Calendar 클래스에서 체크해야 할 것!
[Calendar.MONTH]
→ MONTH 는 배열 형태(0~11)를 하고 있으므로 원하는 월을 보려면 +1을 해줘야 함(get)
→ 반대로 set()할 때는 원하는 월 -1을 해줘야 함!!
/*
○ java.util.Calendar 클래스는
날짜와 시간을 객체 모델링화 한 클래스로
연, 월, 일, 요일, 시, 분, 초 까지의
시간과 날짜와 관련된 정보를 제공한다.
그리고, Calendar 클래스는 추상클래스이므로 직접 객체를 생성할 수 없으며
실제적인 메소드 구현은 Calendar 클래스의 서브 클래스인
GregorianCalendar 클래스에 정의되어 있다.
시스템으로부터 현재 시스템 시간 정보를 얻어올 때
getInstance() 라는 정적(static) 메소드를 이용하여 객체를 생성할 수 있다.
생성된 Calendar 클래스 객체는 시스템의 현재 날짜와 시간 정보를 가지며,
이 객체가 생성되면 갖고 있는 시간 정보들은
get() 메소드를 이용하여 쉽게 가져올(사용할) 수 있다.
getInstance() 메소드는 내부적으로 GregorianCalendar 객체를 생성하여
반환해 주기 때문에 GregorianCalendar 객체를 직접 생성하여 날짜 시간 정보를
구할 수도 있다.
*/
// 연, 월, 일, 요일을 Calendar 객체로부터 가져와 출력
import java.util.Calendar;
import java.util.GregorianCalendar;
public class Test142
{
public static void main(String[] args)
{
// Calendar 객체 생성
// Calendar ob = new Calendar; 캘린더는 추상 클래스이기 때문에 이렇게 객체를 생성할 수 없다.
Calendar rightNow = Calendar.getInstance();
// 생성된 달력(Calendar) 인스턴스를 통해
// 날짜 관련 정보를 얻어낼 수 있는 메소드 → 『get()』
int y = rightNow.get(Calendar.YEAR); // YEAR는 static final(상수화된 변수)
System.out.println("y : " + y);
//--==>> y : 2023
int m = rightNow.get(Calendar.MONTH)+1; // check~! MONTH는 배열 형태(0~11)를 하고 있으므로 원하는 월을 보려면 +1을 해줘야 한다.
System.out.println("m : " + m);
//--==>> m : 9
int d = rightNow.get(Calendar.DATE);
System.out.println("d : " + d);
//--==>> d : 20
int w = rightNow.get(Calendar.DAY_OF_WEEK);
System.out.println("w : " + w);
//--==>> w : 4
// 테스트(확인)
/*
System.out.println(Calendar.SUNDAY); //--==>> 1 → 일요일
System.out.println(Calendar.MONDAY); //--==>> 2 → 월요일
System.out.println(Calendar.TUESDAY); //--==>> 3 → 화요일
System.out.println(Calendar.WEDNESDAY); //--==>> 4 → 수요일
System.out.println(Calendar.THURSDAY); //--==>> 5 → 목요일
System.out.println(Calendar.FRIDAY); //--==>> 6 → 금요일
System.out.println(Calendar.SATURDAY); //--==>> 7 → 토요일
*/
System.out.println(y + "-" + m + "-" + d + "-" + w);
//--==>> 2023-9-20-4
String week = "";
switch (w)
{
/*
case Calendar.MONDAY : week = "월요일"; break;
case Calendar.TUESDAY : week = "화요일"; break;
case Calendar.WEDNESDAY : week = "수요일"; break;
case Calendar.THURSDAY : week = "목요일"; break;
case Calendar.FRIDAY : week = "금요일"; break;
case Calendar.SATURDAY : week = "토요일"; break;
*/
case 1 : week = "일요일"; break;
case 2 : week = "월요일"; break;
case 3 : week = "화요일"; break;
case 4 : week = "수요일"; break;
case 5 : week = "목요일"; break;
case 6 : week = "금요일"; break;
case 7 : week = "토요일"; break;
}
System.out.println(y + "-" + m + "-" + d + " " + week);
//--==>> 2023-9-20 수요일
System.out.println("/////////////////////////");
// Calendar 객체 생성
Calendar rightNow2 = new GregorianCalendar();
String[] week2 = {"일요일", "월요일", "화요일", "수요일", "목요일", "금요일", "토요일"};
// 달력의 날짜 세팅 → 『set()』 메소드 활용
rightNow2.set(2024, 2, 19); // 2024년 3월 19 //check~!!
System.out.println(rightNow2.get(Calendar.DAY_OF_WEEK));
//--==>> 3
System.out.println(week2[rightNow2.get(Calendar.DAY_OF_WEEK)-1]);
//--==>> 화요일
}
}