본문 바로가기
안드로이드 자바

[JAVA][Android] 안드로이드 LocalDateTime 사용법 2 (비교, 기간 구하기)

by teamnova 2021. 10. 12.
728x90

안녕하세요. 

저번시간에서는 LocalDateTime 객체를 생성해서 날짜나 시간을 관리하는 방법에 대해 배웠는데요.

이번에는 LocalDateTime 객체 2개를 서로 비교하는 메서드와 두 객체간의 기간 차이를 구하는 방법에 대해 알아보겠습니다.  

 

객체 비교하기

LocalDateTime 객체는 두개의 객체를 서로 비교할 수 있습니다. 

누가 더 이전의 날짜인지, 또는 같은 날짜인지 등을 비교비교하여 boolean 값으로 받을 수 있습니다. 

 

LocalDateTime startDT = LocalDateTime.of(2021, 8, 14,19,32,22); //8월 14일
LocalDateTime endDT = LocalDateTime.of(2021, 8, 15,19,32,22); // 8월 15일


//startDT가 endDT보다 이전 시간인지 확인한다. 
startDT.isBefore(endDT); // 결과 : true

//같은 날짜+시간일 경우 true를 리턴한다. 
//** 나노초가 존재할 경우, 나노초의 시간도 일치해야 true를 리턴
startDT.isEqual(endDT); // 결과 : false

//startDT가 endDT보다 이후 시간인지 확인한다. 
startDT.isAfter(endDT); // 결과 : false

 

객체간의 기간 차이 구하기

1. 날짜차이 Period

LocalDate startDT = LocalDate.of(2021,8,14); //8월 14일
LocalDate endDT = LocalDate.of(2021,9,15); // 9월 15일

//기간 차이를 담은 객체 만들기
Period period = Period.between(startDT, endDT);

period.getYears(); //년
period.getMonths();//월
period.getDays();//일
//**startDT와 endDT가 31일 차이가 나면 리턴이 31일이 되는 것이 아니라 1개월 1일로 반환됨

2.  전체 시간을 기준으로 차이 계산 ChronoUnit 

LocalDate startDT = LocalDate.of(2021,8,14); //8월 14일
LocalDate endDT = LocalDate.of(2021,9,15); // 9월 15일

//기간 차이를 담은 객체 만들기
ChronoUnit.DAYS.between(startDT, endDT); // return : 31

ChronoUnit.YEARS // 전체 년 차이
ChronoUnit.MONTHS // 전체 월 차이
ChronoUnit.WEEKS // 전체 주 차이
ChronoUnit.DAYS // 전체 일 차이
ChronoUnit.HOURS // 전체 시간 차이
ChronoUnit.SECONDS // 전체 초 차이

 

예제

https://stickode.com/detail.html?no=2518

 

스틱코드

 

stickode.com

변수 설정
onCreate 부분 코드
날짜+시간 선택 다이얼로그 띄우는 함수
set() 함수 부분 코드 (1)
set() 함수 부분 코드 (2)

 

시연