Java

[Java]Date 클래스

MoZZANG 2022. 3. 10. 21:57

날짜와 시간을 다를 때 많이 쓰는 Date클래스에 대해 알아보자.

 

대부분의 메소드는 Deprecated되어있다. 즉, 버전이 업데이트 되면 없어지는 메소드들이 많다. 그래서 메소드들을 쓸 때 잘 살펴보고 사용해야지 그렇지 않으면 높은 버전에서 기존코드를 사용했을 때는 없는 메소드가 되어서 에러가 생길 수 있다.

 

Date()나 Date(long date)를 제외한 모든 생성자와 대부분의 메소드가 Deprecated되었다.

 

때문에 현재는 Calendar클래스나 GregorianCalendar클래스를 사용하기를 권장하고 있다.

 

또한 Date클래스의 toString()메소드 역시 메모리의 주소를 문자열로 반환하는 것이 아니라 저장된 날짜 데이터를 문자열로 반환되도록 Over ride되어있다.

 

 

대부분의 Date클래스의 메소드들은 static이 없기때문에 인스턴스화를 통해 사용해주어야 한다.

 

추가로 우리가 쓰는 Date클래스는 util에 있는 기능이므로 import할 때 sql이 아닌 util.Date를 해주어야한다.

 

 

 

우선은 많은 것이 Deprecated되었지만 몇가지를 사용해보도록 하자.

 

Date클래스의 날짜와 시간은 1970년 1월1일 00시00분00초 영국그리니치 천문대의 시간에서부터 시작된 것으로 설정되어 있다.

 

▲ Date클래스를 선언과 동시에 인스턴스화 시킨 후 사용한다.  Deprecated된 메소드들을 사용할 때는 위와 같이 메소드이름위에 줄이 생성되어 경고를 해주는 것을 볼 수 있다.

 

▼ 여기서 getDay()메소드는 아래와 같이 직접 날짜를 반환하지 않고 날짜에 해당하는 숫자를 반환한다.

따라서 우리는 가독성을 위해 메소드를 하나 만들자.

 

 

▲ getDay()메소드가 반환하는 숫자를 우리가 읽기 편하게 메소드를 하나 만들었다. 인자를 받아서 매개변수로 전달한다.

 

 

▲ 위에서 작성한 코드의 출력결과이다. 원래는 주소값이 나와야 하지만 오버라이딩 되었기에 저장된 데이터값인 현재 시스템기준 날짜와 시간이 출력된 것을 볼 수 있다.

 

 

또한 getYear()는 현재 년도에서 -1900을 뺀 값을 반환해준다.

따라서 우리는 1900을 더해주므로써 현재년도를 구할 수 있다.

 

목요일은 우리가 만든 메소드인 dayOfWeek덕분에 출력된 것이고, 만일 메소드 없이 getDay()메소드만 사용했다면 숫자 4가 출력되었을 것이다.