자바에서 특정 날짜의 1일전, 1개월전, 1년전 날짜를 알고 싶을때 어떻게 하면 될까? (또는 1일후, 1년 후)
프로젝트 진행 중 휴면계정 처리를 하다보니,
특정 회원이 마지막으로 로그인한 날짜에서 11개월동안 로그인을 하지 않았을 경우에는 "휴면계정 처리 예정" 메일을 발송하도록 하고, 메일 발송 후에도 로그인을 하지않아서 12개월동안 미로그인한 회원은 휴면계정으로 처리하고자 했다.
DB에서 마지막 로그인 날짜를 가져오고 오늘 날짜도 미리 세팅을 해둔다.
나는 DB에서 가져올때 "yyyy-MM-dd"의 형식으로 가져왔고 자바에서 dateFormat을 만들때도 같은 형식으로 만들어줬다.
Date date = new Date();
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
Calendar cal = Calendar.getInstance();
cal.setTime(date);
# 오늘 날짜
Date today = dateFormat.parse(dateFormat.format(cal.getTime()));
# DB에서 가져온 마지막 로그인 일자
Date lastLoginDay = dateFormat.parse((String) map.get("loginDt));
↳이 부분은 각자 다 다르겠죠!
cal.setTime(loginDay);
# 마지막 로그인 일자로부터 11개월 후
cal.add(Calendar.MONTH, 11);
↳ 11개월 전 : cal.add(Calendar.MONTH, -11);
Date mailSendDay = cal.getTime();
# 마지막 로그인 일자로부터 1년 후
# 위 순서대로 코딩을 했다면 cal.setTime을 loginDay로 다시 해줘야한다
cal.setTime(loginDay);
cal.add(Calendar.YEAR, 1);
Date deleteDay = cal.getTime();
이렇게 간단히 원하는 날짜를 얻을 수 있다.
끝~
'JAVA' 카테고리의 다른 글
[JAVA] (Collections ①) ArrayList / LinkedList (0) | 2020.08.28 |
---|---|
[JAVA] 5 SOLID programming principles (0) | 2020.08.27 |
[JAVA] 자바 Project / Package / Class / Methods / Variable 명명 규칙 (0) | 2020.08.26 |
[JAVA] UpCasting / DownCasting (0) | 2020.08.26 |
[JAVA] Casting (형변환) (0) | 2020.08.26 |