본문 바로가기

JAVA

[JAVA] Calendar & SimpleDateFormat 1

자바의 날짜를 가지고 놀때 자주 사용되는 두 클래스.
그중 Calendar 클래스 부터.

 1. 라이브러리 에서의 위치

java.util
 

Class Calendar

java.lang.Object
  extended by java.util.Calendar

import java.util.Calendar;

사용을 위해선 위와 같은 라이브러리를 import 시켜주어야 함.

이하 기본적인 예제를 통한 Calendar 클래스 사용법 

1. 기본적인 시간 정보 가져오기

		Calendar today = Calendar.getInstance( );  
		//인스턴스를 받아오면서 현재시간이 세팅됨.

	    System.out.println("현재 년: " +  today.get(Calendar.YEAR));
	    System.out.println("현재 월: " + (today.get(Calendar.MONTH) + 1));
	    //달의 경우 1월이 0부터 시작하기때문에 출력시 +1을 해줘야 현대잘이 출력
	    System.out.println("현재 일: " +  today.get(Calendar.DAY_OF_MONTH));
	    System.out.println();
	    
	    System.out.println("현재 시: " +  today.get(Calendar.HOUR));//오전, 오후
	    System.out.println("현재 시: " +  today.get(Calendar.HOUR_OF_DAY));//24시간형식
	    System.out.println("현재 분: " +  today.get(Calendar.MINUTE));
	    System.out.println("현재 초: " +  today.get(Calendar.SECOND));
	    System.out.println();

	    System.out.println("현재 초의 1000분의1초: " +  today.get(Calendar.MILLISECOND));

	    System.out.println("현재 요일: " +  today.get(Calendar.DAY_OF_WEEK)); // 일요일 = 1
	    System.out.println("올해 몇 번째 날: " + today.get(Calendar.DAY_OF_YEAR)); // 1월 1일 = 1
	    System.out.println("올해 몇 번째 주: " + today.get(Calendar.WEEK_OF_YEAR)); // 올해의첫재주 = 1
	    System.out.println("이번 달의 몇 번째 주: " + today.get(Calendar.WEEK_OF_MONTH)); // 첫째주 = 1
	    //위의 경우 1부터 시작됨.
=== >결과
<작성이 10월 6일 5시 17분 되었기에>
현재 년: 2011
현재 월: 10
현재 일: 6

현재 시: 5
현재 시: 17
현재 분: 52
현재 초: 0

현재 초의 1000분의1초: 606
현재 요일: 5
올해 몇 번째 날: 279
올해 몇 번째 주: 41
이번 달의 몇 번째 주: 2


2.  set() 메소드와 add()메소드를 이용한 날짜 세팅

	    today.set(2022, 1, 22, 22, 22, 22);
	    //2022년 2월 22일 22시 22분 22초가 나오기 위해선 월 세팅에 1을 해주어야한다.
	    //월은 0부터시작하기 때문에.
	    System.out.println("처음 세팅된 시간 : " + today.getTime());
	    today.set(2004, 10, 12);
	    System.out.println("년,월,일 변경됨 : " + today.getTime());	    	    	    
	    today.set(2004, 10, 12, 20, 46);
	    System.out.println("년,월,일,시,분 까지변경 : " + today.getTime());
	    System.out.println();
	    
	    today.set(Calendar.DAY_OF_MONTH, Calendar.OCTOBER);
	    System.out.println("변경된 모습 : " + today.getTime());
	    today.set(Calendar.DATE, 22);
	    System.out.println("변경된 모습 : " + today.getTime());
	    today.set(Calendar.DAY_OF_YEAR, 2012);
	    System.out.println("변경된 모습 : " + today.getTime());
	    
	    System.out.println();
	    System.out.println();	    
	    
	    Calendar newtoday = Calendar.getInstance( );
	    System.out.println("현재 날자 : "+ newtoday.getTime());
	    newtoday.add(Calendar.MONTH, 2);
	    System.out.println("두달을 더해줌 : " + newtoday.getTime());
	    newtoday.add(Calendar.DATE,	12);
	    System.out.println("12일을 더해줌 : " + newtoday.getTime());

---> 결과
처음 세팅된 시간 : Tue Feb 22 22:22:22 KST 2022
년,월,일 변경됨 : Fri Nov 12 22:22:22 KST 2004
년,월,일,시,분 까지변경 : Fri Nov 12 20:46:22 KST 2004

변경된 모습 : Tue Nov 09 20:46:22 KST 2004
변경된 모습 : Mon Nov 22 20:46:22 KST 2004
변경된 모습 : Sat Jul 04 20:46:22 KST 2009

현재 날자 : Thu Oct 06 18:19:10 KST 2011
두달을 더해줌 : Tue Dec 06 18:19:10 KST 2011
12일을 더해줌 : Sun Dec 18 18:19:10 KST 2011


3. set()과 add()의 차이. 

	    today.set(2011, 7, 31);	    
	    today.set(Calendar.MONTH, Calendar.SEPTEMBER);
	    System.out.println("set을 이용해 다음달로 바꿀 경우: "+ today.getTime());
	    today.set(2011, 7, 31);	    
	    today.add(Calendar.MONTH, 1);
	    System.out.println("add를 이용해 다음달로 바꿀 경우: "+ today.getTime());


---> 결과
set을 이용해 다음달로 바꿀 경우: Sat Oct 01 20:46:22 KST 2011
add를 이용해 다음달로 바꿀 경우: Fri Sep 30 20:46:22 KST 2011
 
세팅된 날짜가 8월 31일일 때, set을 이용하여 월만 9월로 변경시 9월은 30일이 끝이기 때문에 10월 1일로 넘어가나,
add를 이용하여 1달을 더해줄 경우, 9월 30일일로 자동으로 맞추어 진다.



기타 더 자세한 사항은 API를 참조-
http://download.oracle.com/javase/1.5.0/docs/api/java/util/Calendar.html