[더 자바, Java8] 5. Date 와 Time

eunsol Jo·2024년 2월 9일
0

🎱  더 자바, Java8

목록 보기
5/5
post-thumbnail

출처 ‣ 더 자바 Java 8, 백기선 / 인프런

5. Date 와 Time

5.1 기존 date & time 표현의 한계

		// 기존에 사용하던 date & time 객체
        Date date = new Date(); // 사실상 timestamp
        long time = date.getTime();

        System.out.println("date = " + date);
        System.out.println("time = " + time); // epock 기계용 시간 리턴
        
        Calendar calendar = Calendar.getInstance();
        SimpleDateFormat dateFormat = new SimpleDateFormat();
        
// output
date = Fri Feb 09 17:54:39 KST 2024
time = 1707468879367
  • 이름이 작명의 불편함 (date.getTime() : date에서 time을 가져옴)
  • Date 객체는 mutable 해서 thread safe하지 않음
  • Calendar 의 month를 int로 받음 > -100도 입력 가능 > type safty 하지 않다.

위와 같은 문제들로 JSR-310이라는 스팩으로 표준화함

5.2 자바8의 Date-Time API (java.time package)

  • JSR-310 스팩의 구현체
  • 디자인 철학
    • Clear : API의 명확성
    • Fluent : null을 리턴하지 않아 메서드 체인 방식으로 보다 가독성 있는 소스 작성 가능
    • Immutable
    • Extensible : 그레고리안 뿐만아닌 다른 달력에 대한 확장성 제공

1) 기계용/사람용 API

2) 타임스탬프 Instant

주요 API
• 기계용 시간 (machine time)과 인류용 시간(human time)으로 나눌 수 있다.
• 기계용 시간은 EPOCK (1970년 1월 1일 0시 0분 0초)부터 현재까지의 타임스탬프를 표현한다.
• 인류용 시간은 우리가 흔히 사용하는 연,월,일,시,분,초 등을 표현한다.
• 타임스탬프는 Instant를 사용한다.
• 특정 날짜(LocalDate), 시간(LocalTime), 일시(LocalDateTime) 를 사용
• 기간 표현시 시간(Duration), 날짜(Period) 사용
• Date TimeFormatter를 사용해서 일시를 특정한 문자열로 포매팅할 수 있다

profile
Later never comes 👩🏻‍💻

0개의 댓글