LocalDate, LocalTime, LocalDateTime

JH·2024년 2월 5일

java

목록 보기
1/21

LocalDate

  • 년도, 월, 일이 저장되는 타입의 클래스

객체 생성

LocalDate date1 = LocalDate.of(2020, 2, 1); // 지정한 년도와 월, 일을 저장
LocalDate date2 = LocalDate.now(); // 오늘에 해당하는 년도와 월, 일을 저장

날짜 사이의 간격 구하기

// ChronoUnit 사용
import static java.time.temporal.ChronoUnit.*;

ChronoUnit.YEARS.between(date1, date2); // 년도 차이
MONTHS.between(date1, date2); // 월 차이
DAYS.between(date1, date2); // 일 차이

// until 사용
date1.until(date2, YEARS);
date1.until(date2, MONTHS);
date1.until(date2, DAYS);

Period p = date1.until(date2);
System.out.println(p.getYears() + "년 " + p.getMonths() + "개월 " + p.getDays() + "일");
// 출력 결과 : 4년 0개월 4일

Period p2 = Period.between(date1, date2);
System.out.println(p2.getYears() + "년 " + p2.getMonths() + "개월 " + p2.getDays() + "일");
// 출력 결과 : 4년 0개월 4일

날짜 계산

date1.plus(Period.of(1, 3, 5)); // 년, 월, 일을 모두 더함
date1.minus(Period.ofMonths(5)); // 월만 마이너스

LocalTime

  • 시간이 저장되는 타입의 클래스

객체 생성

LocalTime time1 = LocalTime.of(1, 10, 20); // 시 분 초 저장
LocalTime time2 = LocalTime.of(2, 11, 50, 999123456); // 시 분 초 나노초 저장
LocalTime time3 = LocalTime.now(); // 현재 시간 저장

시간 계산

ChronoUnit.HOURS.between(time1, time2); // 시간 차이
MINUTES.between(time1, time2); // 분 차이
SECONDS.between(time1, time2); // 초 차이
MILLIS.between(time1, time2); // 밀리초 차이
NANOS.between(time1, time2); // 나노초 차이

time1.until(time2, HOURS);
time1.until(time2, MINUTES);
time1.until(time2, SECONDS);
time1.until(time2, MILLIS);
time1.until(time2, NANOS);

Duration d = Duration.between(time1, time2);
d.getSeconds(); // 초 차이
d.getNano(); // 나노초 차이

Duration d2 = Duration.of(55, SECONDS); // 55초를 저장
time1.minus(d2); // time1에서 55초를 뺀 결과
time1.plus(30, SECONDS); // time1에서 30초를 더한 결과
💡 Period는 날짜의 차이를 확인할 때 사용하는 클래스이고, Duration은 시간 차이를 확인할 때 사용하는 클래스이다.

LocalDateTime

  • 년도, 월, 일과 함께 시간도 저장되는 타입의 클래스

객체 생성

LocalDateTime dateTime1 = LocalDateTime.of(2021, 8, 7, 19, 55, 22); // 2021년 8월 7일 19시 55분 22초
LocalDateTime dateTime2 = LocalDateTime.now(); // 현재 날짜 및 시간

날짜 사이의 간격 구하기

// ChronoUnit 사용
import static java.time.temporal.ChronoUnit.*;

ChronoUnit.YEARS.between(dateTime1, dateTime2); // 년도 차이
MONTHS.between(dateTime1, dateTime2); // 월 차이
DAYS.between(dateTime1, dateTime2); // 일 차이
HOURS.between(dateTime1, dateTime2); // 시간 차이
MINUTES.between(dateTime1, dateTime2); // 분 차이

// until 사용
dateTime1.until(dateTime2, YEARS);
dateTime1.until(dateTime2, MONTHS);
dateTime1.until(dateTime2, DAYS);
dateTime1.until(dateTime2, HOURS);
dateTime1.until(dateTime2, MINUTES);

Period p = date1.until(date2);
System.out.println(p.getYears() + "년 " + p.getMonths() + "개월 " + p.getDays() + "일");
// 출력 결과 : 4년 0개월 4일

Period p2 = Period.between(date1, date2);
System.out.println(p2.getYears() + "년 " + p2.getMonths() + "개월 " + p2.getDays() + "일");
// 출력 결과 : 4년 0개월 4일

날짜 계산

dateTime1.plusYears(1); // 1년 더하기
dateTime1.minusDays(2); // 2일 빼기
dateTime1.withYear(2019); // 년도를 2019년으로 설정
dateTime1.with(TemporalAdjusters.firstDayOfMonth()); // 현재 달의 첫 날짜로 설정
dateTime1.with(TemporalAdjusters.lastDayOfMonth()); // 현재 달의 마지막 날짜로 설정
LocalDateTime dateTime3 = dateTime1.with(TemporalAdjusters.lastInMonth(DayOfWeek.SUNDAY)); // 현재 달의 마지막 일요일로 설정
dateTime3.with(TemporalAdjusters**.next(DayOfWeek.FRIDAY)**); // 현재 날짜의 다음주 금요일로 설정

포맷 변경하여 출력

DateTimeFormatter df = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
dateTime1.format(df);
dateTime2.format(df);
profile
발전하는 백엔드 개발자

0개의 댓글