LocalDateTime
가장 기본이 되는 날짜와 시간 클래스는 `LocalDate, LocalTime, LocalDateTime 이다.
- LocalDate: 날짜만 표현할 때 사용한다. 년, 월, 일을 다룬다. 예) `2013-11-21`
- LocalTime: 시간만을 표현할 때 사용한다. 시, 분, 초를 다룬다. 예) `08:20:30.213`
초는 밀리초, 나노초 단위도 포함할 수 있다. - LocalDateTime: `LocalDate` 와 `LocalTime` 을 합한 개념이다. 예) `2013-11-21T08:20:30.213`
앞에 Local현지의, 특정 지역의)이 붙는 이유는 세계 시간대를 고려하지 않아서 타임존이 적용되지 않기 때문이다.
특정 지역의 날짜와 시간만 고려할 때 사용한다.
모든 날짜 클래스는 불변이다. 따라서 변경이 발생하는 경우 새로운 객체를 생성해서 반환하므로 반환값을 꼭 받아야 한 다.
ZonedDateTime
ZonedDateTime 은 LocalDateTime에 시간대 정보인 ZoneId 가 합쳐진 것이다.
isEqual() vs equals()
- `isEqual()` 는 단순히 비교 대상이 시간적으로 같으면 `true` 를 반환한다. 객체가 다르고, 타임존이 달라도 시간적으로 같으면 `true` 를 반환한다. 쉽게 이야기해서 시간을 계산해서 시간으로만 둘을 비교한다.
예) 서울의 9시와 UTC의 0시는 시간적으로 같다. 이 둘을 비교하면 `true` 를 반환한다. - `equals()` 객체의 타입, 타임존 등등 내부 데이터의 모든 구성요소가 같아야 `true` 를 반환한다.
예) 서울의 9시와 UTC의 0시는 시간적으로 같다. 이 둘을 비교하면 타임존의 데이터가 다르기 때문에 `false` 를 반환한다.
-
Instant
Instant는 UTC(협정 세계시)를 기준으로 하는, 시간의 한 지점을 나타낸다. `
Instant는 날짜와 시간을 나노초 정밀도로 표현하며 1970년 1월 1일 0시 0분 0초(UTC 기준)를 기준으로 경과한 시간으로 계산된다.
쉽게 이야기해서 Instant 내부에는 초 데이터만 들어있다. (나노초 포함)
따라서 날짜와 시간을 계산에 사용할 때는 적합하지 않다.
문제 풀이
달력 출력하기
실행 결과를 참고해서 달력을 출력해라.
입력 조건: 년도, 월
실행시 날짜의 간격에는 신경을 쓰지 않아도 된다. 간격을 맞추는 부분은 정답을 참고하자.
'언어 기초 > JAVA' 카테고리의 다른 글
열거형 - ENUM [JAVA | 학습을 위한 자료 | 김영한 자바 중급 1편] (5) | 2024.10.10 |
---|---|
래퍼, Class클래스 [JAVA | 학습을 위한 자료 | 김영한 자바 중급 1편] (2) | 2024.10.10 |
String클래스 [JAVA | 학습을 위한 자료 | 김영한 자바 중급 1편] (5) | 2024.09.17 |
불변객체 [JAVA | 학습을 위한 자료 | 김영한 자바 중급 1편] (2) | 2024.09.15 |
Object클래스 [JAVA | 학습을 위한 자료 | 김영한 자바 중급 1편] (3) | 2024.09.15 |