- LocalDate : 날짜만 표현할 때 사용. 년, 월, 일을 다룸
- LocalTime : 시간만을 표현할 때 사용. 시, 분, 초를 다룸
- LocalDateTime : LocalDate와 LocalTime를 합친 개념
앞에 Local이 붙는 이유는 세계 시간대를 고려하지 않아서 타임존이 적용되지 않기 때문이다 !
=> 내가 하는 대부분의 개발은 국내 서비스만 하기 때문에 상관이 없다.. 글로벌 서비스 없음 ㅎㅎ
생성
now() : 현재 시간을 기준으로 생성
of(...) : 특정 날짜를 기준으로 생성. 년, 월, 일 입력 가능
계산
plusDays( ) : 특정 일을 더한다.
주의 - 불변
모든 날짜 클래스는 불변이기 때문에 변경이 발생하는 경우 새로운 객체를 생성해서 반환하므로 반환 값을 꼭 받아야 한다.
LocalDateTime
LocalDateTime은 LocalDate와 LocalTime을 내부에 가지고 날짜와 시간을 모두 표현한다.
public static void main(String[] args) {
LocalDateTime nowDt = LocalDateTime.now();
LocalDateTime ofDt = LocalDateTime.of(2016, 8, 16, 10, 1);
System.out.println("현재 날짜시간=" + nowDt);
System.out.println("지정 날짜시간=" + ofDt);
// 날짜와 시간 분리
LocalDate localDate = ofDt.toLocalDate();
LocalTime localTime= ofDt.toLocalTime();
System.out.println("localDate = " + localDate);
System.out.println("localTime = " + localTime);
// 날짜와 시간 합체
LocalDateTime localDateTime = LocalDateTime.of(localDate, localTime);
System.out.println("localDateTime = " +localDateTime);
// 계산 ( 불변 )
LocalDateTime ofDtPlus = ofDt.plusDays(1000);
System.out.println("지정 날짜시간+1000d = " + ofDtPlus);
LocalDateTime ofDtPlus1Year = ofDt.plusYears(1);
System.out.println("지정 날짜시간 + 1y = " + ofDtPlus1Year);
// 비교
System.out.println("현재 날짜시간이 지정 날짜시간보다 이전인가? " + nowDt.isBefore(ofDt));
System.out.println("현재 날짜시간이 지정 날짜시간보다 이후인가? " + nowDt.isAfter(ofDt));
System.out.println("현재 날짜시간과 지정 날짜시간이 같은가? " + nowDt.isEqual(ofDt));
}
- isBefore( ) : 다른 날짜시간과 비교해 현재 날짜와 시간이 이전이라면 true를 반환
- isAfter( ) : 다른 날짜 시간과 비교해 현재 날짜와 시간이 이후라면 true를 반환
- isEquals( ) : 다른 날짜 시간과 시간적으로 동일한지 비교해 시간이 같으면 true를 반환
isEquals( ) 와 equals( ) 의 차이 ?!
isEquals는 단순하게 비교 대상이 시간적으로 같으면 true를 반환한다.
즉, 객체가 다르고 타임존이 달라도 시간이 같으면 true를 반환한다.
equals( )는 객체의 타입, 타임존 등등 내부 데이터의 모든 구성요소가 같아야 true를 반환한다.
공부 내용: [인프런] 김영한의 실전 자바 - 중급 1편
'Java' 카테고리의 다른 글
[인프런] ENUM (0) | 2024.06.15 |
---|---|
[인프런] Class 클래스 (1) | 2024.06.09 |
[인프런] 래퍼 클래스 (1) | 2024.06.09 |
[인프런] String 클래스 (1) | 2024.06.08 |
[인프런] 기본형과 참조형의 공유 (0) | 2024.06.06 |