-
LocalDate
LocalDate locDate = LocalDate.now(); //2021-05-01
LocalDate myDate = LocalDate.of(2001,01,02); //2001-01-02
-
LocalTime
LocalTime locTime = LocalTime.now(); //18:21:52.659944
LocalTime myTime = LocalTime.of(12,01,02,03); //12:01:02.000000003
- LocalTime.of 사용시 세번째 인자는 second, 네번째 인자는 nanoSecond값으로 생략가능
-
LocalDateTime
- LocalDateTime 인스턴스를 출력해보면 T가 포함되어있는데, 이는 ISO형식 시간표기법이라는 의미이다
- Format없이 String에서 LocalDateTime으로 파싱시 T부분이 빠지면 Exception이 발생한다
LocalDateTime locDateTime = LocalDateTime.now(); //2021-05-01T 18:30:19.653060
-
날짜, 시간 더하고 빼기
- plusYear(long), plusMonth(long), minusYear(long), minusMonth(long)...
- 기존 LocalDateTime의 값을 변경하지 않으며,
해당 함수의 실행결과가 담긴 새로운 LocalDateTime객체를 리턴받는다
LocalDateTime plusDateTime = locDateTime.plusYears(1);
//2022-05-01T18:34:33.323258
-
날짜, 시간 비교
- isBefore(LocalDateTime), isAfter(LocalDateTime), isEqual(LocalDateTime)...
LocalDate firstDate = LocalDate.of(2021, 01, 01);
LocalDate secondDate = LocalDate.of(2021, 02, 01);
firstDate.isBefore(secondDate); //true
firstDate.isAfter(secondDate); //false
firstDate.isEqual(secondDate); //false
firstDate.plusMonths(1).isEqual(secondDate)); //true
- LocalDateTime 또는 LocalTime 비교시 nanoSecond까지 비교가되므로 주의한다
-
날짜 차이 계산
- Period : 두 날짜의 차이를 년, 월 ,일의 값으로 구분하여 결과를 얻을 수 있다
- ChronoUnit : 두 날짜의 차이를 년, 월, 일 등의 특정 기준으로 계산된 결과를 얻을 수 있다
LocalDate ldt1 = LocalDate.of(2019, 1, 1);
LocalDate ldt2 = LocalDate.of(2021, 4, 5);
Period prd = Period.between(ldt1,ldt2);
prd.getYears(); //2
prd.getMonths(); //3
prd.getDays(); //4
ChronoUnit.YEARS.between(ldt1, ldt2); //2
ChronoUnit.MONTHS.between(ldt1, ldt2); //27
ChronoUnit.DAYS.between(ldt1, ldt2); //825
- ChronoUnit에서 년 기준 2년 6개월 이상 차이가나는 경우를 테스트해보았는데버림방식으로 보임
-
LocalDateTime to String, String to LocalDateTime
//LocalDateTime을 특정 format의 String으로
LocalDateTime now = LocalDateTime.now();
DateTimeFormatter dtFmt = DateTimeFormatter.ofPattern("yyyy-MM-dd hh:mm:ss");
String ldtStr = now.format(dtFmt); //2021-05-03 02:42:09
//특정 format의 날짜를 LocalDateTime으로
LocalDateTime ldtParse1 = LocalDateTime.parse("2021-01-01T15:39:30");
//ldtParse1 : 2021-01-01T15:39:30
LocalDateTime ldtParse2 = LocalDateTime.parse("2021/02/02 15:39:30"
, DateTimeFormatter.ofPattern("yyyy/MM/dd HH:mm:ss"));
//ldtParse2 : 2021-02-02T10:13:30