본문 바로가기

Backend

날짜/시간 클래스 정리 (java.time)

반응형

자바의 Date API

JDK 1.0 → Date

JDK 1.1 ~ → Calendar

JDK 8 ~ → ZonedDateTime, LocalDateTime

위에서 말한 Date 와 Calendar 클래스에는 문제점이 많아서 사용을 추천하지 않는다.

 

1. 자바 버전업으로 인한 클래스의 많은 메소드가 Deprecate (사용 불가)

import java.text.SimpleDateFormat;
import java.util.Date;

public class JavaDateTest {
    public static void main(String[] args) {
        Calendar cal = Calendar.getInstance();
        Date date = cal.getTime();
        String dateString = new SimpleDateFormat("yyyy-MM-dd").format(date);
        // 2018-12-09
        System.out.println(dateString);

        // 1일 더한다.
        cal.add(Calendar.DATE, 1);
        date = cal.getTime();
        dateString = new SimpleDateFormat("yyyy-MM-dd").format(date);

        // 2018-12-10
        System.out.println(dateString);
    }
}

2. 애매한 상수의 이용

 

3. 월 계산 (0부터 시작하는 MONTH 상수)

public final static int JANUARY = 0;

public final static int FEBRUARY = 1;

public final static int MARCH = 2;

4. 불변(Immutability) 객체가 아니다 → 변화되는 값

Calendar cal = Calendar.getInstance();
cal.set(Calendar.MONTH, 2 - 1);

 

java.time 패키지

JDK 1.8 버전에서 추가된 클래스

  • LocalDateTime
  • ZonedDateTime (타임존 개념 포함)

LocalDate : 년, 월, 일

LocalTime : 시, 분, 초

LocalDateTime : LocalDate와 LocalTime의 정보를 모두 가지고 있다.

// 오늘 날짜, 2018-12-11
LocalDate nowDate = LocalDate.now();

// 2018년 12월 11일, 2018-12-11
LocalDate ofDate = LocalDate.of(2018, 12, 11);

// 바로 지금, 2018-12-11T13:12:11
LocalDateTime nowDateTime = LocalDateTime.now();

// 2018년 12월 11일 15시 23분 32초, 2018-12-11T15:23:32
LocalDateTime ofDateTime = LocalDateTime.of(2018, 12, 11, 15, 23, 32);
반응형