JAVA

JAVA Calendar

짱코딩러 2022. 7. 26. 22:39

java.util.Calendar

추상 클래스 이므로, getInstance()를 통해 구형된 객체를 얻어야 한다.

get()  =>객체의 필드값을 가져옴

set()  =>객체의 필드값을 변경함

 

get()

import java.util.Calendar;

public class Ex10_1 {

	public static void main(String[] args) {
//		기본적으로 현재 날짜와 시간으로 설정된다.
		Calendar today = Calendar.getInstance();	//Calendar객체를 생성
		System.out.println("이 해의 년도 : "+today.get(Calendar.YEAR));		//현재 연도
		System.out.println("월(0~11, 0:월): "+today.get(Calendar.MONTH));//월은 +1해줘야 실제 월임
		System.out.println("이 해의 몇 째 주: "+today.get(Calendar.WEEK_OF_YEAR));//1월1일부터 지금가지 몇주가 지났는지
		System.out.println("이 달의 몇 째 주: "+today.get(Calendar.WEEK_OF_MONTH));
		
//		DATE와 DAY_OF_MONTH는 같다.
		System.out.println("이 달의 몇 일: "+today.get(Calendar.DATE));
		System.out.println("이 달의 몇 일: "+today.get(Calendar.DAY_OF_MONTH));
		System.out.println("이 해의 몇 일: "+today.get(Calendar.DAY_OF_YEAR));	//올해 며칠지났는지
		System.out.println("요일(1~7, 1:일요일): "
								+today.get(Calendar.DAY_OF_WEEK));		//1:일요일, 2:월요일...
		System.out.println("이 달의 몇 째 요일: "
								+today.get(Calendar.DAY_OF_WEEK_IN_MONTH));
		System.out.println("오전_오후(0:오전, 1:오후): "
								+today.get(Calendar.AM_PM));
		System.out.println("시간(0~11): "+today.get(Calendar.HOUR));
		System.out.println("시간(0~23): "+today.get(Calendar.HOUR));
		System.out.println("분(0~59): "+today.get(Calendar.HOUR));
		System.out.println("초(0~59): "+today.get(Calendar.HOUR));
		System.out.println("1000분의 1초(0~999): "
							+today.get(Calendar.MILLISECOND));
//		천분의 1초를 시간으로 표시하기 위해 3600000으로 나누었다.(1시간 = 60*60초)
		System.out.println("TimeZone(-12~+12): "
							+today.get(Calendar.ZONE_OFFSET)/(60*60*1000));
		System.out.println("이 달의 마지막 날: "
				+today.get(Calendar.DATE));	//이 달의 마지막 일을 찾는다.
		
	}

}

 

set()

void set(int field, int value)
void set(int year, int month, int date)
void set(int year, int month, int daet, int hourOfDay, int minute)
void set(int year, int month, int daet, int hourOfDay, int minute, int second)
import java.util.Calendar;

public class Ex10_2 {

	 public static void main(String[] args) {
	        // 요일은 1부터 시작하기 때문에, DAY_OF_WEEK[0]은 비워두웠다.
	        final String[] DAY_OF_WEEK = {"", "일", "월", "화", "수", "목", "금", "토"};

	        Calendar date1 = Calendar.getInstance();
	        Calendar date2 = Calendar.getInstance();

	        // month의 경우 0부터 시작하기 때문에 4월인 경우, 3으로 지정해야한다.
	        // date1.set(2019, Calendar.APRIL, 29); 와 같이 할 수도 있다.

	        //2019년 3월 29일로 날짜를 변경한다.
	        date1.set(2019, 3, 29);

	        System.out.println("date1은" + toString(date1) + DAY_OF_WEEK[date1.get(Calendar.DAY_OF_WEEK)] + "요일이고,");
	        System.out.println("오늘(date2)은" + toString(date2) + DAY_OF_WEEK[date2.get(Calendar.DAY_OF_WEEK)] + "요일입니다.");

	        // 두 날짜간의 차이를 얻으려면 getTimeInMillis() 천분의 일초 단위로 변환해야한다.
	        long difference = (date2.getTimeInMillis() - date1.getTimeInMillis()) / 1000;

	        System.out.println("date1부터 date2까지" + difference + "가 지났습니다.");
	        System.out.println("일로 계산하면" + difference / (24 * 60 * 60) + "일입니다.");
	    }

public static String toString(Calendar date) {
	return date.get(Calendar.YEAR)+"년 "+ (date.get(Calendar.MONTH)+1)
						+"월 "+ date.get(Calendar.DATE)+"일";
}
}

 

시간 계산

import java.util.Calendar;

public class Ex10_3 {

	 public static void main(String[] args) {
	        final int[] TIME_UNIT = {3600, 60, 1};  //큰 단위를 앞에 놓는다.
	        final String[] TIME_UNIT_NAME = {"시간", "분", "초"};

	        Calendar time1 = Calendar.getInstance();
	        Calendar time2 = Calendar.getInstance();

	        // time1을 10시 20분 30초로 설정
	        time1.set(Calendar.HOUR_OF_DAY, 10);    
	        time1.set(Calendar.MINUTE, 30);
	        time1.set(Calendar.SECOND, 30);

	        // time2를 20시 30분 10초로 설정
	        time2.set(Calendar.HOUR_OF_DAY, 20);
	        time2.set(Calendar.MINUTE, 30);
	        time2.set(Calendar.SECOND, 10);


	        System.out.println("time1 : " + time1.get(Calendar.HOUR_OF_DAY) + "시 " 
	        + time1.get(Calendar.MINUTE) + "분 " + time1.get(Calendar.SECOND) + "초");
	        System.out.println("time2 : " + time2.get(Calendar.HOUR_OF_DAY) + "시 " 
	        + time2.get(Calendar.MINUTE) + "분 " + time2.get(Calendar.SECOND) + "초");


	        long difference = Math.abs(time2.getTimeInMillis() - time1.getTimeInMillis()) / 1000;
	        System.out.println("time1과 time2의 차이는 " + difference + "초 입니다.");


	        String tmp = "";
	        for(int i = 0; i < TIME_UNIT.length; i++){
	            tmp += difference / TIME_UNIT[i] + TIME_UNIT_NAME[i];
	            difference %= TIME_UNIT[i];
	        }
	        System.out.println("시분초로 변환하면 " + tmp + "입니다.");
	    }
}

'JAVA' 카테고리의 다른 글

JAVA 쓰레드  (0) 2022.07.29
JAVA 컬렉션 프레임웍 List Set Map  (0) 2022.07.29
JAVA 생성자  (0) 2022.07.23
JAVA java.lang 패키지  (0) 2022.07.21
JAVA 인터페이스  (0) 2022.07.19