본문 바로가기

언어 기초/JAVA

날짜와 시간 [JAVA | 학습을 위한 자료 | 김영한 자바 중급 1편]

 

 

LocalDateTime

 

 



가장 기본이 되는 날짜와 시간 클래스는 `LocalDateLocalTime, 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

 

 



InstantUTC(협정 세계시)를 기준으로 하는, 시간의 한 지점을 나타낸다. `

Instant는 날짜와 시간을 나노초 정밀도로 표현하며 197011000(UTC 기준)를 기준으로 경과한 시간으로 계산된다.

쉽게 이야기해서 Instant 내부에는 초 데이터만 들어있다. (나노초 포함)

따라서 날짜와 시간을 계산에 사용할 때는 적합하지 않다.

 

 

 


문제 풀이

달력 출력하기

실행 결과를 참고해서 달력을 출력해라.
입력 조건: 년도,
실행시 날짜의 간격에는 신경을 쓰지 않아도 된다
. 간격을 맞추는 부분은 정답을 참고하자.