반응형
# 자바 날짜 비교하여 날짜간의 차이 구하기.
- 현재날짜와 기존에 등록된 날짜를 비교하여 며칠 차이나는지 구하여 로그인 시 장기간 동일한 비밀번호 사용에 따른 알림으로 비밀번호 변경을 요청 하는 등에 적용할 수 있다.
1. 비교에 앞서 현재 날짜, 비교할 날짜를 가져온다.
// 현재 날짜 가져오기 (설정한 형식인 "yyyy-MM-dd HH:mm:ss" 대로 가져와진다.
// current = "2020-08-29 21:58:50";
SimpleDateFormat format1 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String current = format1.format(System.currentTimeMillis());
// 저장된 날짜 or 임의의 날짜
// member에 별도로 updateDate를 두어 이전 날짜를 기록해두었다.
// String last = "2020-01-01 21:58:50"; 등으로 설정하여 사용 가능
String last = member.getUpdateDate();
2. 비교하여 차이 구하기
// 날짜 차이를 담을 변수 생성
long calDateDays = 0;
try{
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd"); // 소문자mm으로 할 경우 분을 의미한다.
// current, last 두 날짜를 parse()를 통해 Date형으로 변환.
Date currentDate = format.parse(current);
Date lastDate = format.parse(last);
// Date로 변환된 두 날짜를 계산한 후, 리턴값으로 long type 변수를 초기화
// 연산의 결과 -950400000 long type 으로 return
long calDate = currentDate.getTime() - lastDate.getTime();
// getTime()은 해당날짜를 기준으로1970년 00:00:00 부터 몇 초가 흘렀는지를 반환해준다.
// 24*60*60*1000(각 시간값에 따른 차이점) 을 나눠주면 일수가 나온다.
calDateDays = calDate / ( 24*60*60*1000);
calDateDays = Math.abs(calDateDays);
System.out.println("비밀번호 변경 후 소요된 기간 : "+calDateDays);
}
catch(ParseException e) {
// 예외 처리
}
반응형
'프로그래밍 > 자바, JDBC' 카테고리의 다른 글
게시판 리스팅되는 시간 측정 방법 (0) | 2020.09.25 |
---|---|
자바 크롤링 (0) | 2020.09.04 |
lodash (throttle, debounce) 개념 (0) | 2020.08.26 |
cannot be cast to java.lang.String 해결방법 (0) | 2020.08.09 |
스프링 부트2 (0) | 2020.08.03 |