Java 8
이전에 사용하던 Date 관련 클래스는 Date
, Calendar
, SimpleDateFormat
등이 있었으나, 여러 문제가 있어 자바 8 버전 이후부터는 새로운 날짜 관련 API를 제공한다.
기존 클래스들의 문제는 다음과 같다.
Calendar
클래스의 경우 입력값의 month
가 0이 1월로 처리됩니다. 그래서 Calendar.SEPTEMBER 같은 상수를 사용해야 하며, DB 데이터랑 연결하면서 서로 다르게 해석된다.위의 여러한 문제들이 있어 Java8 이전에서는 Joda-Time
이라는 라이브러리를 사용했다. 그러나, Java 8부터는 Joda-Time이 자바 표준 라이브러리
로 들어왔다.
Local
이 들어가면 “시간대(Zone Offset/Zone Region)에 대한 정보가 없다”를 의미
LocalDateTime
의 now
는 default time-zone의 정보를 사용
LocalDateTime
으로 표현생일이나 기념일 등에 주로 사용
분명한 시간대에서 일어난 이벤트를 나타내는 데는 적합하지 않다.
Unix Timestamp
를 사용하면 되지 않나?Unix Timestamp
는 2038년 문제가 있다. 1970년 1월 1일 자정에서부터 2147483647 초가 지난 2038년 1월 19일 화요일 03:14:07 UTC
까지 표현이 가능하다. 이것을 보완한 것이 Instant
클래스이다.Local/Offset/ZonedDateTime
과 비교했을 때 연산 속도가 훨씬 빠르다.
https://www.baeldung.com/java-instant-vs-localdatetime
https://stackoverflow.com/questions/32437550/whats-the-difference-between-instant-and-localdatetime