ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Java] 날짜,시간과 관련된 LocalDateTime의 역사
    Java 2022. 8. 27. 00:01

    Java 1.0 Date 클래스

    자바 1.0부터 java.util.Date 클래스 하나로 날짜와 시간관련 기능을 제공했습니다.

    Date라는 클래스의 이름과 달리 특정 시점을 날짜가 아닌 밀리초 단위로 표현합니다.

    또한 1900년을 기준으로 시작하는 오프셋, 0에서 시작하는 달 인덱스 등 모호한 설계로 유용성이 떨어집니다.

     

    2017년 9월 21일 가리키는 Date 인스턴스를 만드는 코드

    Date date = new Date(117,8,21);
    
    //출력
    //Thu Sep 21 00:00:00 KST 2017

     

    Java 1.1 Calendar 클래스

    자바 1.1에서는 Date클래스의 여러 메서드를 deprecate시키고 Calendar 클래스를 대안으로 제공합니다.

     

    1900년을 기준으로 시작하는 오프셋은 없앴지만 여전히 달의 인덱스는 0부터 시작합니다.

     

    또한 Date와 Calendar 두 가지 클래스가 등장하면서 개발자의 혼란이 가중되기만 했습니다.

     

    Date, Calendar 모두 가변 클래스이며 DateFormat 같은 일부 클래스는 Date 클래스에서만 동작합니다.

     

    DateFormat도 스레드에 안전하지 않은 문제가 있습니다.

     

    Java 1.8 LocalDate와 LocalTime

    부실날 날짜와 시간 라이브러리 때문에 많은 개발자는 joda-time 같은 외부 라이브러리를 사용했습니다.

    결국 Java8 부터 Joda-Time의 많은 기능을 java.time 패키지로 추가했습니다.

     

    LocalDate 인스턴스는 시간을 제외한 날짜를 표현하는 불변 객체입니다.

    (LocalTime와 LocalDateTime은 불변 객체가 아닙니다.)

    //현재 날짜를 얻기
    LocalDate today = LocalDate.now();

     

    LocalTime 인스턴스를 시간을 표현합니다.

    //14:23:30 시간 표현
    LocalTime time = LocalTime.of(14,23,30);

     

    LocalDateTime은 LocalDate와 LocalTime을 가지고 있는 복합클래스입니다.

    날짜와 시간을 모두 표현할 수 있습니다.

    LocalDateTime localDateTime = LocalDateTime.of(2019,7,21, 13, 45, 20);
    //출력
    //2019-07-21T13:14:20

     

    'Java' 카테고리의 다른 글

    Throwable 클래스란?  (0) 2023.06.16
    Instant vs LocalDateTime  (0) 2023.05.27
    [Java]ExecutorService란?  (0) 2022.07.31
    Java Lazy Evaluation이란?  (0) 2022.07.24
    책임 연쇄 패턴이란?  (0) 2022.07.19

    댓글

Designed by Tistory.