Java/자바의정석

Java_날짜와 시간 & 형식화

유서담 2023. 8. 6. 23:50

Date

 

JDK1.0부터 제공되어온 클래스. 기능이 많이 부족

 

Calendar가 새로 추가되면서 Date는 대부분의 메서드가 'deprecated'되었으므로 잘 사용되지 않음

Date를 Calendar로 변환

Date d = new Date();
---
Calendar cal = Calendar.getInstance();
cal.setTime(d)

 

Calendar

 

JDK1.1부터 제공. Date의 단점을 보완하기 위해 탄생

추상클래스 / 직접 객체를 생성하지 못하고 메서드를 통해서 완전히 구현된 클래스의 인스턴스를 얻어야 함.

 

Calendar를 Date로 변환
Calendar cal = Calendar.getInstance();
---
Date d = new Date(cal.getTimeInMillis());	// Date(long date)

 

Calendar 메서드

 

.getInstance() : 현재 시스템의 날짜와 시간에 대한 정보를 담고 있다

.set() : 날짜와 시간을 원하는 값으로 변경할 때 사용

.getTimeInMillis() : 1/1000초 단위로 값을 반환

.add() : 지정한 필드의 값을 원하는 만큼 증가 또는 감소가 가능

 

 

java.time패키지

 

JDK1.8부터 제공. 기존의 단점들을 개선한 새로운 클래스

 

패키지 설명
java.time 날짜와 시간을 다루는데 필요한 핵심 클래스 제공
java.time.chrono 표준이 아닌 달력 시스템을 위한 클래스 제공
java.time.format 날짜와 시간을 파싱, 형식화하기 위한 클래스 제공
java.time.temporal 날짜와 시간의 필드와 단위를 위한 클래스들을 제공
java.time.zone 시간대와 관련된 클래스 제공

 

java.time 패키지의 핵심 클래스

LocalDate(날짜) + LocalTime(시간) -> LocalDateTime(날짜&시간)
LocalDateTime + 시간대 -> ZonedDateTime

 

Period와 Duration

날짜 - 날짜 = Period	// 두 날짜간의 차이
시간 - 시간 = Duration	// 두 시간의 차이

 

Instant

 

컴퓨터를 위한 날짜, 시간

에포크 타임(EPOCH TIME, 1970-01-01 00:00:00 UTC)부터 경과된 시간을 나노초 단위로 표현

 

TemporalAdjusters

 

자주 쓰일만한 날짜들을 대신 해주는 메서드를 정의해놓은 클래스

메서드 설명
firstDayOfNextYear() 다음 해의 첫 날
firstDayOfNextMonth() 다음 달의 첫 날
lastDayOfYear() 올 해의 마지막 날
lastDayOfMonth() 이번 달의 마지막 날
firstInMonth(DayOfWeek dayOfWeek) 이번 달의 첫 번째 ?요일
lastInMonth(DayOfWeek dayOfWeek) 이번 달의 마지막 ?요일