날짜 LocalDate, LocalTime, LocalDateTime

Web Development assistant·2022년 1월 28일
0

# java

목록 보기
8/17

기존의 Date 와 Calendar 클래스는 다음과 같은 문제점이 있다.
1. 불변 객체가 아니다.

-> 즉 set으로 변경이 가능하다는 점은 누군가 악의적으로 변경할 수 있기 때문에 get/set 메서드에서 직접 Date클래스를 사용하는 것이 위험하다.

  1. 상수 필드 남용

-> calendar.add(Calendar.SECOND, 2);

  1. 헷갈리는 월 지정

-> 1월을 0으로 표현하는 문제 + Calendar.OCTOBER로 월을 지정하지만 실질적인 값은 9(!=10)인 문제

  1. 일관성 없는 요일 상수

-> 어디서는 일요일이 0, 어디서는 일요일이 1

  1. Date와 Calendar 객체의 역할 분담

-> 다소 치명적인데 년/월/일 계산은 Date 클래스만으로는 부족해서 왔다갔다 하는 문제가 있다. 또한 Calendar객체를 생성하고 Date 객체를 생성하는 프로세스를 거치기 때문에 번거롭고 생성비용이 비싸다.

  1. 기타 java.util.Date 하위 클래스의 문제

위와 같은 문제들이 존재한다.

그렇기 때문에 기존의 개발자들도 자바에서 제공하는 API를 사용하지 않고 적절하게 만든 오픈 소스 라이브러리인 joda time을 주로 사용한다.
이러한 문제를 해결하기 위해서 java8부터는 LocalDate, LocalTime, LocalDateTime 이라는 클래스를 만들었다.

joda time의 영향을 받아 비슷하게 설계되었다고 한다.

바로 사용법을 코드로 보여주는게 더 이해가 빠를 것 같아 아래 코드에서 확인한다.

직접 테스트

타 블로그

위의 사용법을 통해서 날짜/시간을 생성하는 방법을 배웠으면 입맛에 맞게 바꾸는 방법도 아래에서 알아본다.

참고로 날짜와 시간을 plusSeconds(), minusSeconds() 등으로 변환하는 메서드도 있고, 날짜간의 전후관계라든지 이런 비교와 관련된 isBefore(), isAfter()등 다양한 메서드들이 준비되어 있으니 확인하고 사용한다.

날짜 시간변환

출처: https://jeong-pro.tistory.com/163 [기본기를 쌓는 정아마추어 코딩블로그]

0개의 댓글