[JAVA] Calender 클래스

김윤섭·2023년 9월 4일
0

JAVA

목록 보기
21/27
post-thumbnail

(1) Calender Class

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

(2) Calender 객체 생성

// 객체 생성시 자동입력
import java.util.Calender;
//싱글톤 객체 불러오기
Calender cal = Calender.getInstance();

(3) Calender 객체 호출

  • get으로 호출
  1. 현재 날짜 호출
// 년 호출
int yy = cal.get( Calneder.Year );

// 월 호출 (자바의 월은 0부터)
int mm = cal.get( Calendar.MONTH ) + 1;

// 일 호출 
int dd = cal.get( Calendar.DAY_OF_MONTH );
  1. 현재 시간 호출
// 시 호출
1) 24시간제 int hh = cal.get( Calendar.HOUR_OF_DAY );
2) 12시간제 int hh2 = cal.get( Calendar.HOUR ); 

// 분 호출
int mi = cal.get( Calendar.MINUTE );

// 초 호출
int ss = cal.get( Calendar.SECOND );

// "오전", "오후" 호출
int ampm = cal.get( Calendar.AM_PM );		
String[] apname = {"오전", "오후"};

(4) 시간 변경하기

  • 캘린더 클래스를 파라미터로 전달받아, 그 객체가 포함하고 있는 시각을 출력하는 메서드
import java.util.Calendar;

public class DatePrinter {

	public static void printDateTime ( Calendar cal ) {
		int yy = cal.get( Calendar.YEAR );
		int mm = cal.get( Calendar.MONTH ) + 1;
		int dd = cal.get( Calendar.DAY_OF_MONTH );
		int hh = cal.get( Calendar.HOUR_OF_DAY );
		int mi = cal.get( Calendar.MINUTE );
		int ss = cal.get( Calendar.SECOND );
		
		System.out.printf("%04d년 %02d월 %02d일 %02d시 %02d분 %02d초\n"
							, yy, mm, dd, hh, mi, ss);		
	}
}
  • 위 메서드 사용해서 add메서드로 시간 변경하기
import java.util.Calendar;

public class Main02 {
	
	public static void main(String[] args) {
		// 캘린더 객체
		Calendar cal = Calendar.getInstance();
    
        //1. 현재 시각
		DatePrinter.printDateTime(cal);
		//클래스이름.메서드이름(변수);
        
		// 2. 지금으로부터 100일 후
		cal.add(Calendar.DAY_OF_MONTH, 100);
		DatePrinter.printDateTime(cal);
		
		// 3. 75년 전 
		cal.add(Calendar.YEAR, -75);
		DatePrinter.printDateTime(cal);
		
		// 4. 9시간 후
		cal.add(Calendar.HOUR, 9);
		DatePrinter.printDateTime(cal);
		
		// 5. 8달 후
		cal.add(Calendar.MONTH, 8);
		DatePrinter.printDateTime(cal);
  • 결과값
   2023년 02월 03일 23시 40분 01초
    2023년 05월 14일 23시 40분 01초
    1948년 05월 14일 23시 40분 01초
    1948년 05월 15일 08시 40분 01초
    1949년 01월 15일 08시 40분 01초
    
   	 // 누적값으로 출력

(5) 특정 날짜로 지정하기

  • set 메서드 사용
import java.util.Calendar;

public class Main03 {

	public static void main(String[] args) {
    
		Calendar cal = Calendar.getInstance();
        
        //1. 현재시간
		DatePrinter.printDateTime(cal);
		//위에 만들었덛 DatePrinter 클래스 사용
        
		//2. 특정 날짜로 지정
		cal.set(Calendar.YEAR, 2020);
		cal.set(Calendar.MONTH, 4); // 5월 (월은 0 시작)
		cal.set(Calendar.DAY_OF_MONTH, 5);
		cal.set(Calendar.HOUR_OF_DAY, 15);
		cal.set(Calendar.MINUTE, 30);
		cal.set(Calendar.SECOND,33);
		DatePrinter.printDateTime(cal);
		
		//3. 특정 날짜로 지정2
		cal.set(1982, 5, 17);
		DatePrinter.printDateTime(cal);
		
		//4. 특정 날짜로 지정3
		cal.set(1982, 5, 17, 1, 2, 3);
		DatePrinter.printDateTime(cal);
  • 결과값
2023년 02월 03일 23시 47분 11초
    2020년 05월 05일 15시 30분 33초
    1982년 06월 17일 15시 30분 33초
    1982년 06월 17일 01시 02분 03초

(6) Calender 사용 응용

  • 현재 날짜 : 2023년 02년 03일 금요일
  • 요일에 해당하는 인덱스 (일=1~ 토=7)
int day = cal.get(Calendar.DAY_OF_WEEK);
	System.out.println("요일 인덱스 = " + day);
  • 요일 출력하기
String[] day_name = {"일", "월", "화", "수", "목", "금", "토", "일"};
	System.out.println("요일 = " + day_name[day-1]);		
  • 이번달은 몇주로 되어있는가?
int week_count = cal.getActualMaximum(Calendar.WEEK_OF_MONTH);
	System.out.println("이번 달은 " + week_count + "주로 되어 있다.");			
  • 이번달은 며칠까지 있는가?
int day_count = cal.getActualMaximum(Calendar.DAY_OF_MONTH);
	System.out.println("이번 달은 " + day_count + "일 까지 있다.");

-이번달은 무슨 요일부터 시작하는가?

cal.set(Calendar.DAY_OF_MONTH, 1);
	int first_day = cal.get(Calendar.DAY_OF_WEEK);
	System.out.println("이번 달은 시작 요일 인덱스 = " + first_day);
	System.out.println("이번 달의 시작 요일 = " + day_name[first_day -1]);	
  • 결과값
요일 인덱스 = 7
    요일 = 토
    이번 달은 5주로 되어 있다.
    이번 달은 28일 까지 있다.
    이번 달은 시작 요일 인덱스 = 4
    이번 달의 시작 요일 = 수

(7) 밀리세컨드

  • 시간에 대한 표현
  • 1초 = 1000 밀리세컨드
  • 어떤 프로그램에서 지연시간이 생기는 지 알아볼 때 사용

(8) 밀리세컨드 사용

  • 현재 시각에 대한 TimeStamp 밀리세컨즈 단위로 얻기
Calendar cal = Calendar.getInstance();
        
		long ms1 = cal.getTimeInMillis();
		System.out.println(" 시작 >> " + ms1);
  • 프로그램을 주어진 시간동안 대기하도록 하는 처리
try {
			Thread.sleep(5000);
		} catch (InterruptedException e) {
			e.printStackTrace();
		} 
        
        // try ~ catch 이유 : 오류가 잘 생기는 프로그램 자바에서 자동으로 필요하다고 뜸
        // Unhandled exception type InterruptedException
  • 위의 두 프로그램의 사용
import java.util.Calendar;

public class Main05 {

	public static void main(String[] args) {
		// 캘린더 객체 복사
		Calendar cal = Calendar.getInstance();
		// 현재시간의 밀리세컨드
		long ms1 = cal.getTimeInMillis();
		System.out.println("파일복사 시작 >> " + ms1);
		// 5초 지연
		try {
			Thread.sleep(5000);
		} catch (InterruptedException e) {
			e.printStackTrace();
		} 
        // 결과 도출
		long ms2 = System.currentTimeMillis();
		System.out.println("파일복사 끝 >> " + ms2);
        
        // 두 시간의 차이 얻기(5초 지났는지 확인)
		long x = ms2 - ms1;
		System.out.println(x);
		
		// 1/1000초 이므로, 100으로 나누면
		// 소요 시간을 얻을 수 있다.
		long y = x / 1000;
		System.out.println(y + "초 지났음");
  • 결과값
파일복사 시작 >> 1675438053516

// 5초 후 

파일복사 끝 >> 1675438058529
5013
5초 지났음
profile
안녕하세요

0개의 댓글