[Java] 날짜, 시간관련 클래스

Hyo Kyun Lee·2022년 2월 3일
0

Java

목록 보기
36/49

1. Date 클래스

Java.util package에서 제공하는 클래스로, 시간을 구해준다.
지역화를 고려하지 않은 클래스로 현재 대부분 deprecated된 기능들이 존재하며, 이에 대해 개선된 클래스로 calender 클래스를 제공한다.

public class DateTest{
	public static void main(String[] args){
		Date date = new Date();
        System.out.println(date.toString());
        System.out.println(date);
    }
}

String이 오버라이드된 상태로 date, date.toString()을 사용하여 날짜 출력이 가능하다.
단 위 Date 클래스는 우리가 원하는 형식으로 날짜가 출력되지 않는다.

public class DateTest{
	public static void main(String[] args){
    	Date date = new Date();
        SimpleDateFormat ft = new SimpleDateFormat("yyyy.MM.dd 'at' hh:mm:ss" a);
        //이때 생성자를 통해 날짜를 출력할 모양을 구현한다.
    	System.out.println(ft.format(date));
        //위에서 구현한 모양대로 날짜가 출력된다.
        
        System.out.println(date.getTime()); //long type 현재시간
    	long time = System.currentTimeMillis();
        System.out.println(time - date.getTime()); //위 시각에서 지나간 시간
    }
}

위와 같이 우리가 원하는 형식으로 날짜가 출력되고, long type의 date 클래스가 설정되면서 이를 활용할 수도 있다.

2. Calendar 클래스

현재 날짜를 나타내기 위해 사용하는 클래스로, 지역화가 고려되었다.

Calendar는 기본적으로 추상 클래스로, 우리가 실질적으로 사용하는 클래스(생성하는 객체)는 Gregorian Calendar라는 자식 클래스이다.

이후 getInstance 메소드를 활용하여, calendar 객체를 return받아 자체적인 날짜 관련 메소드를 사용할 수 있게 된다.

public class Calendar{
	public static void main(String[] args){
		Calendar cal = Calendar.getInstance();
        
        System.out.println(cal.get(Calendar.YEAR)); //년도
        System.out.println(cal.get(Calendar.MONTH)); //월
        System.out.println(cal.get(Calendar.DATE)); //일
        System.out.println(cal.get(Calendar.HOUR)); //시간(12진수)
        System.out.println(cal.get(Calendar.HOUR_OF_DAY)); //시간(24진수)
        System.out.println(cal.get(Calendar.MINUTE)); //분
    }
}

add 메소드를 활용하여 특정 값을 계산하여 출력할 수도 있다.

public class Calendar{
	public static void main(String[] args){
		Calendar cal = Calendar.getInstance();
        
        cal.add(Calendar.HOUR, 5); //이후 HOUR에 5를 더해서 출력한다.
        System.out.println(cal.get(Calendar.HOUR));
    }
}
  • j
Calendar cal = Calendar.getInstance();        // Calendar클래스 생성

int yyyy = cal.get(Calendar.YEAR);             
int month = cal.get(Calendar.MONTH) + 1;      // 월은 0부터 시작합니다.
int date = cal.get(Calendar.DATE);
int hour = cal.get(Calendar.HOUR_OF_DAY);     // 하루를 24시간으로 표현한 시각
int minute = cal.get(Calendar.MINUTE);

3. java.time 패키지

기존 Date, Time API의 단점을 보완하여, 직관성과 활용성을 높인 클래스를 제공하는 패키지(라이브러리)이다.

java.time에서 제공하는 클래스는 다양한 메소드를 가지고 있고, 이를 통해 생성된 객체에서의 메소드는 static하게 사용이 가능하다.

public class Calendar{
	public static void main(String[] args){
    	LocalDateTime timepoint = LocalDateTime.now(); //현재 시간정보를 담은 객체 생성
        System.out.println(timepoint);
        
        LocalDateTime time = LocalDateTime.of(2012, Month.DECEMBER, 12) //지역 시간정보를 직접 대입할 수도 있음
        System.out.println(time); //2012-12-12
    	
    }
}

이외에도 시간정보만 출력하거나, String type의 시간정보객체를 생성하거나, 지역시간을 출력하는 등 다양한 객체를 만들어낼 수 있다.

LocalTime time1 = LocalTime.of(17:18) //17:18, 시간정보만 출력
LocalTime time2 = LocalTIme.parse("10:15:30") //10:15:30 시간정보가 문자열 형태로 출력

LocalDateTime timepoint = LocalDateTime.now();
LocalDate localdate = timeout.toLocalDate(); //2022-02-03

System.out.println(timepoint.getMonthValue()); //month type의 월 정보 출력
System.out.println(timepoint.getMonthValue().getValue()); //int type의 월 정보 출력

4. 참조자료

프로그래머스 강의 - java time 패키지
https://programmers.co.kr/learn/courses/9/lessons/266

0개의 댓글