반응형

# 자바 날짜 비교하여 날짜간의 차이 구하기.

  • 현재날짜와 기존에 등록된 날짜를 비교하여 며칠 차이나는지 구하여 로그인 시 장기간 동일한 비밀번호 사용에 따른 알림으로 비밀번호 변경을 요청 하는 등에 적용할 수 있다.
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

+ Recent posts