본문 바로가기
개발자 양성과정 필기노트/JAVA

Date, Calendar 클래스 / Time패키지

by jono 2021. 10. 10.

     I. Date 클래스     


 # 사용하기 

- 기본생성자로 인스턴스를 생성하여 접근한다.

- 인스턴스 생성시 년,월,일 값을 매개변수로 전달할 수는 있지만 해당 년,월,일로 지정되지 않음.

Date day1 = new Date(); //Sun Oct 10 16:19:37 KST 2021
Date day2 = new Date(2000,5,10)//Thu Jul 05 00:00:00 KST 3900->2000년 5월 10일로 설정되지 않음.

 

 # Date클래스 메서드 

1. getYear() -> [객체의년도] - [1900] 값이 리턴됨. 

                 -> 정상적인 객체년도값을 구하려면 +1900 처리를 해야한다.

2. getMonth() -> 1월:0 ~ 12월:11 의 값을 리턴한다.

                    -> 정상적인 객체의 월 값을 구하려면 +1 처리를 해야한다.

3. getDate() -> 객체의 일자를 리턴한다. 별도의 처리가 필요없음

4. getDay() -> 요일정보를 int데이터로 리턴한다. 일요일:0 ~ 토요일:6

               -> switch-case문을 사용해 X요일을 리턴하도록 설정한다.

5. getTime() -> long타입데이터로 날짜정보를 리턴한다.

                  -> getTime()메서드를 적용한 두 객체를 뺄셈하면 두 날짜 사이의 차이를 알 수 있다.

                  -> long타입 데이터를 보기쉽게 수정하기

                      =>  Math.abs( 날짜 / 1000 밀리초 -> 초 / 60 초->분 / 60 분->시 / 24 시->일 )


     II. Calendar 클래스     


 # 사용하기

- 추상클래스이므로 인스턴스 생성이 불가능!

-> getInstance() 메서드를 사용하여 객체를 리턴받아야한다.

import java.util.Calendar;

public class Ex01 {
public static void main(String[] args) {
	Calendar cal = Calendar.getInstance();
}}

-> get( Calendar.상수 ) 메서드를 사용하여 객체의 데이터에 접근한다.

=> 캘린더객체.get(Calendar.구하고자하는 상수데이터)

 

 # get()메서드로 Calendar 객체에 접근하기 

1. get(Calendar.YEAR)

2. get(Calendar.MONTH) -> 0부터 세므로 +1처리 필요

3. get(Calendar.DAY_OF_MONTH) -> 일자 리턴

4. get(Calendar.DAY_OF_WEEK) -> 요일을 int형으로 리턴함. 0:일요일 ~ 6:토요일

5, get(Calendar.AM_PM) -> 오전/오후를 int형으로 리턴함. 0:오전 / 1:오후

6. get( Calendar.HOUR / HOUR_OF_DAY ) -> HOUR:12시간제, HOUR_OF_DAY: 24시간제

7. get(Calendar. MINUTE / SECOND )

 

# Date <-> Calendar 객체 상호변환하기

1. Calendar -> Date

: Calendar객체의 getTime() 메서드를 호출하여 Date타입으로 저장한다.

Calendar cal = Calendar.getInstance();
Date date = cal.getTime();

 

2.  Date -> Calendar

: Calendar객체의 Setter 메서드로 Date의 값을 전달한다.

- 원하는 값을 얻기위해서는 Getter를 사용하여 접근한다.

import java.util.Calendar;
import java.util.Date;
public class Ex01 {
public static void main(String[] args) {
  Date date = new Date(); // Date클래스는 인스턴스 생성이 가능함
  Calendar cal = Calendar.getInstance(); //Calendar클래스는 인스턴스 생성이 불가능하므로 Getter로 접근.
  cal.setTime(date);
  System.out.println(cal.get(Calendar.YEAR)); //2021
}}

     III. Time 패키지     


# 사용하기

Date, Calendar에 비해 직관적이라서 사용하기 쉽다.

-> Calendar클래스와 동일하게, 객체 생성 없이 Getter를 통해 날짜값을 얻는다.

=> Aka "싱글톤 디자인 패턴"

 

# 포함 클래스

- LocalDate - 날짜

- LocalTime - 시간

- LocalDateTime - 날짜 & 시간

 

# 메서드

1. now() - 각 객체의 정보를 가져온다.

//1. LocalDate
LocalDate date = LocalDate.now();

//2. LocalTime
LocalTime time = LocalTime.now():

//3. LocalDateTime
LocalDateTime dt = LocalDateTime();

 

2. of() - 각 객체의 값을 설정한다.

//1. LocalDate
LocalDate date = LocalDate.of(2001,1,1); //2001-01-01

//2. LocalTime
LocalTime time = LocalTime.now(23,07,33): //23:07:33

//3. LocalDateTime
LocalDateTime dt = LocalDateTime(2001,1,1,23,07,33); //2001-01-01T23:07:33

 

3. getXXX() - XXX에 해당하는 상세 데이터를 얻는다.

  • int getYear 
  • Month getMonth - // 영문 월 정보를 리턴한다. ex) NOVEMBER
  • int getMonthValue - 별도의 연산이 필요 없이 올바른 월정보를 리턴함.
  • int getDayOfMonth
  • int getHour
  • int getMinute

 

# 영문 월정보를 한국 월정보로 변환하고 싶은 경우

String Month.getDisplayName(TextStyle style, Locale locale) 메서드를 사용하면 된다.

eMonth.getDisplayName(TextStyle.SHORT, Locale.KOREAN) //11월

 

# 날짜, 시간 정보에 연산을 수행하는 경우

- 해당객체의 plusXXXs(), minusXXXs() 메서드를 호출하여 연산을 수행

- 대상 항목이 변경되는 연관된 다른 항목들도 연쇄적으로 변경된다.

- 따라서 항목의 값을 고정적으로 사용하고 싶다면 withXXX() 메서드를 사용할것.

  • plusYears(n) - n년후 값을 리턴
  • plusMonths(n) - n개월 후 값을 리턴
  • plusDays(n) - n일 후 값을 리턴

 

'개발자 양성과정 필기노트 > JAVA' 카테고리의 다른 글

Enum  (0) 2021.11.13
JFrame 이벤트처리하는 5가지 방법  (0) 2021.11.02
String / StringBuffer, StringTokenizer  (0) 2021.10.10
Random, Arrays 클래스  (0) 2021.10.09
Object클래스 내장메서드  (0) 2021.10.09

댓글