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) | 이번 달의 마지막 ?요일 |