IT 일기장

[Java] 현재와 특정 날짜의 차이 본문

프로그래밍 언어/Java

[Java] 현재와 특정 날짜의 차이

뽕슈 2021. 12. 2. 22:55
반응형
Date today = new Date();
String ago = "2021-09-02 08:52:00";

try {
	Date ThreeMonthAgo = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(ago);
	long diff = today.getTime() - ThreeMonthAgo.getTime();
	diff /= 1000 * 60 * 60 * 24;
	diff /= 30;
	System.out.println(diff + "개월 차이");
} catch (ParseException e) {
	e.printStackTrace();
}

정체불명의 나누기 수식은 1000 (초) * 60 (분) * 60 (시간) * 24 (일) * 30 (월)

30을 분리하고 나눠서 계산한 이유는..

int test1 = 1000 * 60 * 60 * 24 * 30;
BigInteger test2 = new BigInteger("2592000000");

System.out.println("test1 : " + test1);
System.out.println("test1 double type : " + (double) test1);
System.out.println("test1 float type : " + (float) test1);
System.out.println("test2 : " + test2);

자리 수 초과로 음수 결과가 나온다

BigInteger는 게산기 두드려서 숫자를 때려넣은건데 굳이 쓸 이유가 있나

그래서 30은 그냥 따로나눴다

 

실무에서 활용하게 된다면.. 이런식으로 썼다

Date ThreeMonthAgo = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(ago);
long diff = today.getTime() - ThreeMonthAgo.getTime();
diff /= 1000 * 60 * 60 * 24;
diff /= 30;
if (diff >= 3) System.out.println(diff + "개월 이상 비밀번호를 변경하지 않으셨습니다.");

 

반응형
Comments