IT/JAVA

Java API - util package (1)

iamhyeon 2024. 9. 26. 17:50

 

 

< Calendar > class

 

- 날짜 처리 기능을 제공하는 클래스 

 

Calendar cal = Calendar.getInstance();

- Calendar 클래스 객체 생성  ->  싱글톤 객체이다
- 컴퓨터 시각을 멤버변수로 복사한다

import java.util.Calendar;

public class Ex01_날짜출력 {
    public static void main(String[] args) {
        
        Calendar cal = Calendar.getInstance();

        int yy = cal.get(Calendar.YEAR);
        int mm = cal.get(Calendar.MONTH) + 1;   // Java에서 월은 0부터 시작
        int dd = cal.get(Calendar.DAY_OF_MONTH);
        int hh = cal.get(Calendar.HOUR_OF_DAY);     // 24시간제
        int mi = cal.get(Calendar.MINUTE);
        int ss = cal.get(Calendar.SECOND);
        
        hh = cal.get(Calendar.HOUR);    // 12시간제
        mi = cal.get(Calendar.MINUTE);
        ss = cal.get(Calendar.SECOND);

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

▽ 날짜지정

cal.set(Calendar.YEAR, 2025);
cal.set(Calendar.MONTH, 2);   //  -> 3월 (Java는 0부터 월 관리)
cal.set(Calendar.DAY_OF_MONTH, 15);
cal.set(Calendar.HOUR_OF_DAY, 13);
cal.set(Calendar.MINUTE, 30);
cal.set(Calendar.SECOND, 33);

cal.set(2024,04,17);

cal.set(2024,04,19,19,11,51);  // 24시간제만 가능

▽ 날짜연산

cal.add(Calendar.DAY_OF_MONTH, 100);

cal.add(Calendar.DAY_OF_MONTH, -200);

cal.add(Calendar.HOUR, 7);

cal.add(Calendar.MONTH, 8);

 

요일 인덱스

  SUN ... SAT
Java 1 ... 7
JavaScript 0 ... 6

 

▽ 달력 출력

import java.util.Calendar;
import java.util.Scanner;

public class Ex05_날짜처리응용 {
    public static void main(String[] args) {
        
        Scanner scan = new Scanner(System.in);
        System.out.print("년도를 입력하세요: ");
        int year = scan.nextInt();
        System.out.print("월을 입력하세요: ");
        int month = scan.nextInt();
        scan.close();
 
        Calendar cal = Calendar.getInstance();
        cal.set(Calendar.YEAR, year);
        cal.set(Calendar.MONTH, month-1);
        int weekCount = cal.getActualMaximum(Calendar.WEEK_OF_MONTH);   // 이번달이 몇주인지
        int dayCount = cal.getActualMaximum(Calendar.DAY_OF_MONTH);     // 이번달이 몇일까지있는지

        cal.set(Calendar.DAY_OF_MONTH, 1);  // 이 달의 1일로 설정
        int first_day = cal.get(Calendar.DAY_OF_WEEK);  // 이달의 1일의 요일 인덱스
		
        int[][] data = new int[weekCount][7];

        int count = 1;
		
        // "주" 수 만큼 반복
        for ( int i=0; i<data.length; i++ ) {
        	// "요일" 수 만큼 반복
            for (int j =0; j<data[i].length; j++) {
                if(!(i==0 && j+1<first_day) && count<=dayCount) {
                // i=0, j 가 first_Day(시작요일)보다 작지 않을 때
                // count가 이번달의 마지막 날짜 이하일 때
                    data[i][j] = count;
                    count++;
                }
            }
        }

        for (int i=0; i<data.length; i++) {
            for(int j=0; j<data[i].length; j++) {
                if(data[i][j] == 0){
                    System.out.print("\t");
                } else {
                    System.out.printf("%2d\t", data[i][j]);
                }
            }
            System.out.println();
        }

    }
}

▽ 출력결과

 

cal.getActualMaximum(Calendar.WEEK_OF_MONTH);   // 이번달이 몇주인지
cal.getActualMaximum(Calendar.DAY_OF_MONTH);     // 이번달이 몇일까지있는지

 

 

 

 

타임스탬프 : 1970년 1월 1일 자정부터 현재까지 흐른 시간을 초단위로 환산한 값

import java.util.Calendar;

public class Ex06_타임스탬프 {
    public static void main(String[] args) {
    
        Calendar cal = Calendar.getInstance();
        long ms1 = cal.getTimeInMillis();
        System.out.println(ms1);

        try {
            Thread.sleep(5000);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }

        long ms2 = System.currentTimeMillis();
        System.out.println(ms2);

        long x = ms2-ms1;
        System.out.println(x);

        long y = x/1000;
        System.out.println(y + "초 지났습니다");
    }
}

 

cal.getTimeInMillis();            // long 타입만 가능하다

System.currentTimeMillis();        // 다른 클래스의 import 필요X

 

 

==> 자기가 만든 코드가 몇초동안 실행하는지 알 수 있다 !!!

 

'IT > JAVA' 카테고리의 다른 글

for-each  (1) 2024.09.30
Gson(Maven)  (0) 2024.09.27
Java API - Lang package java.lang  (0) 2024.09.26
Helper  (0) 2024.09.26
패키지와 라이브러리  (0) 2024.09.25