◽ Java language/Java

[Java] 날짜, 시간 Class 관련 History 정리 (Date, Calendar, Time Class)

kkk20000a 2021. 12. 1. 17:51

시간/날짜

  Java에서는 1.0 버전부터 Date라는 클래스를 제공해왔었는데, 이게 1.1버전에서 Calendar 클래스가 나옴으로 인해 사용을 권장하지 않는다(deprecated)라고 명시하고 있다.

 

하지만 1.1 버전에서나온 Calendar 클래스도 문제가 존재하는데 크게 3가지 정도 인데

첫번째는 immutable object(불변 객체)가 아니라서 값이 수정될 수 있어 보안상 취약하다. 초기 설정을 잘 못하면 그대로 시간이 가게 된다.

두번째는 leap second(윤초)를 고려하지 않고서 개발된 코드라 운영중인 서버에 적용하기에는 문제가 된다.

세번째는 가장 불편하게 느껴지는 1~12월을 표현할 때 1을 0으로 12를 11로 표현한다는 특성이 있다.

 

이러한 이유로 자바 8에서는 앞서 나온 Date와 Calendar를 보완시킨 Time 클래스를 java.time 패키지로 제공한다. 그래서 아래는 Date와 Calendar를 제외하고 Time Class를 간략하게 정리하려고 한다.


 


아주 간단히 일반적으로 쓰이는 것들만 정리하고 추가 세부적인 옵션은 찾아볼 때마다 정리할 예정.

 

1. LocalDate  

1
LocalDate currentDate = LocalDate.now();    // 2021-12-01, 컴퓨터의 Local 시간을 가져온다.
cs

 

 

2. LocalTime

1
LocalTime currentTime = LocalTime.now();    // 17:25:11.238, 현재 컴퓨터의 Local Time을 가
cs

 

 

3. LocalDateTime

1
LocalDateTime currentDateTime = LocalDateTime.now();   // 2021-12-01T16:34:24.757 둘 다 가져온다.
cs

 

 

 

 

4. 응용

1
2
3
    LocalDateTime currentDate = LocalDateTime.now();
    DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyyMMddHHmmssSSSSSS");
    System.out.println(currentDate.format(dtf)); //20220518204506424313
cs