본문 바로가기

자바(java)

Calendar(GetInstance)

Calendar: 날짜와 시간을 다루는 클래스

 - 추상 클래스이기 때문에 직접 new 하여 객체 생성이 불가능

 - Calendar.getInstance() 메소드를 이용

Calendar cal = Calendar.getInstance();

 

 

오늘날짜에 대한 정보

public class Test {
	public void k1() {
    	// Calendar클래스를 통해 getInstance()메서드를 사용하여 객체 생성
		Calendar cal = Calendar.getInstance(); 
		System.out.println(cal);
				java.util.GregorianCalendar[time=1678759624329,...
				...
				YEAR=2023, //년
				MONTH=2, // 월(0부터 시작)
				WEEK_OF_YEAR=11, // 현재 년도의 몇째 주
				WEEK_OF_MONTH=3, // 현재 월의 몇째 주
				DAY_OF_MONTH=14, // 현재 월의 날짜
				DAY_OF_YEAR=73, // 현재 년도의 날짜
				DAY_OF_WEEK=3, // 현재 요일(일요일(1) 부터 시작)
				DAY_OF_WEEK_IN_MONTH=2,
				AM_PM=0,
				HOUR=11, // 현재시간(12시간제)
				HOUR_OF_DAY=11, // 현재시간(24시간제)
				MINUTE=7, // 현재 분
				SECOND=4, // 현재 초
	}
}

 

 

Calendar클래스가 갖고있는 데이터 가져오기

cal.get(Calendar.원하는 것)

public class Test {	
    public void k2() {
		Calendar cal = Calendar.getInstance();
		
		System.out.println(cal.get(Calendar.YEAR)); // 년
		System.out.println(cal.get(Calendar.MONTH)+1); // 월
		
		int date = cal.get(Calendar.DAY_OF_MONTH); // 일
		System.out.println(date);
		
		date = cal.get(Calendar.DATE); // 일 (ATE 와 DAY_OF_MONTH는 같음.)
		System.out.println(date);
		
		int day = cal.get(Calendar.DAY_OF_WEEK); // 요일
		System.out.println(day);
		
		day = cal.get(Calendar.TUESDAY);
		System.out.println(day); //값이 다름(!=3)
	}
}
===============Console================================
2023
3
14
14
3
11

 

 

Calendar 객체의 정보 변경

cal.set(Calendar.변경하고 싶은 것, 변경내용);

public class Test {
	public void k3() {
		Calendar cal = Calendar.getInstance();
		
		// 월의 값은 api의 값은 우리가 알고 있는 값과 다를 수 있으므로
		// 월에 대한 상수 사용하면 좋다.(JANUARY, TUESDAY, ...)
		System.out.println(cal.get(Calendar.DAY_OF_WEEK));
		System.out.println(cal.get(Calendar.MONTH));
		cal.set(Calendar.MONTH, 0);
		//cal.set(Calendar.MONTH, Calendar.JANUARY); 위와 같음
		System.out.println(cal.get(Calendar.DAY_OF_WEEK));
		System.out.println(cal.get(Calendar.MONTH));
	}
}
====================Console===============================
3
2
7
0

 

 

 일정 기간 전후의 날짜 정보 획득하기 

cal.add(Calendar.원하는 정보, add값)

public class Test {
	public void k4() {
		Calendar cal = Calendar.getInstance();
		Calendar cal2 = Calendar.getInstance();
		
		System.out.println(cal.get(Calendar.YEAR));
		cal.add(Calendar.YEAR, 3);
		System.out.println(cal.get(Calendar.YEAR));
		cal.add(Calendar.YEAR, -3);
		System.out.println(cal.get(Calendar.YEAR));
		
		cal.add(Calendar.MONTH, 11);
		System.out.print(cal.get(Calendar.YEAR));
		System.out.print("::");
		System.out.println(cal.get(Calendar.MONTH));
		
		cal = cal2; //초기화
		
		// 45일 내로 돈을 갚아야 할 때 기한 날짜
		cal.add(Calendar.DAY_OF_MONTH, 45);
		System.out.println(cal.get(Calendar.MONTH));
		System.out.println(cal.get(Calendar.DATE));
	}
)
=================Console===============================
2023
2026
2023
2024::1
3
28

 

 

roll(): 해당 필드의 정보만 루프되면서 바뀜.

cal1.roll(Calendar.원하는 정보, 변경할 값)

 - 다른 상위 필드의 정보는 바뀌지 않음(add와의 차이점)

public class Test {
	public void k5() {
		Calendar cal1 = Calendar.getInstance();
		
		cal1.roll(Calendar.MONTH, 11); // MONTH만 바꿈
		System.out.println(cal1.get(Calendar.YEAR));
		System.out.println(cal1.get(Calendar.MONTH));
		System.out.println(cal1.get(Calendar.DAY_OF_MONTH));
	}
}
=====================Console==================================
2023
1
14

 

 before(), after(): 날짜가 지났는지 여부를 확인할 때 주로 사용

cal1.before(cal2)

cal1.after(cal2)

public class Test {
	
	public void k6() {
		Calendar cal1 = Calendar.getInstance();
		Calendar cal2 = Calendar.getInstance();
		
		cal1.add(Calendar.DATE, 1);
		
		boolean result = cal1.before(cal2);
		System.out.println(result);
		
		result = cal1.after(cal2);
		System.out.println(result);
	}
}
=====================Console====================
false
true

 

'자바(java)' 카테고리의 다른 글

List  (0) 2023.03.15
Date  (0) 2023.03.15
Random  (0) 2023.03.14
예외처리(Exception)  (1) 2023.03.13
내부클래스(Inner Class)  (0) 2023.03.13