꿈꾸는 개발자의 블로그
[Java] Calendar, Date, SimpleDateFormat : 두 날짜 간 차이 계산하기 본문
Programming/Java
[Java] Calendar, Date, SimpleDateFormat : 두 날짜 간 차이 계산하기
aldrn29 2023. 10. 24. 14:29두 날짜 간 차이 계산하기
두 지정 날짜의 차이를 계산하는 방법이다. Calendar, Date, SimpleDateFormat을 이용한 방법이 있다.
- Calendar 인스턴스를 이용하여 날짜를 set() 해주고, getTimeInMillis() 함수를 사용하여 두 날짜의 차이를 구한다.
- SimpleDateFormat을 통해 String 타입의 날짜를 Date로 받고, getTime() 함수를 통해 두 날짜의 차이를 구한다.
- Calendar 인스턴스를 이용하여 날짜를 set() 해주고, getTime() 함수를 사용하여 Date 타입으로 변환하여 받아 getTime() 함수를 통해 두 날짜의 차이를 구한다.
위 과정으로 얻은 두 날짜 간 차이 값(밀리초)을 가지고 년, 일, 시간, 분, 초를 구한다.
전체 코드
1. Calendar를 이용한 계산
Calendar의 월(Month)은 0부터 시작한다.
import java.util.Calendar;
public class Exp {
public static void main(String[] args) {
Calendar cal1 = Calendar.getInstance();
cal1.set(2021, 8, 1, 11, 14, 26);
Calendar cal2 = Calendar.getInstance();
cal2.set(2023, 10, 24, 3, 20, 00);
System.out.println(cal1.getTime()); // Wed Sep 01 11:14:26 GMT 2021
System.out.println(cal2.getTime()); // Fri Nov 24 03:20:00 GMT 2023
long diff = cal2.getTimeInMillis() - cal1.getTimeInMillis();
System.out.println(diff); // 70301134034
}
}
2. Date, SimpleDateFormat을 이용한 계산
import java.util.Date;
import java.text.SimpleDateFormat;
import java.text.ParseException;
public class Exp {
public static void main(String[] args) {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date d1 = null, d2 = null;
try {
d1 = sdf.parse("2021-08-01 11:14:26"); // Sun Aug 01 11:14:26 GMT 2021
d2 = sdf.parse("2023-10-24 03:20:00"); // Tue Oct 24 03:20:00 GMT 2023
} catch (ParseException e) {
e.printStackTrace();
}
long diff = d2.getTime() - d1.getTime();
System.out.println(diff); // 70301134000
}
}
3. Calendar, Date를 이용한 계산
import java.util.Calendar;
import java.util.Date;
public class Exp {
public static void main(String[] args) {
Calendar cal1 = Calendar.getInstance();
cal1.set(2021, 8, 1, 11, 14, 26);
Calendar cal2 = Calendar.getInstance();
cal2.set(2023, 10, 24, 3, 20, 00);
Date d1 = cal1.getTime(); // Wed Sep 01 11:14:26 GMT 2021
Date d2 = cal2.getTime(); // Fri Nov 24 03:20:00 GMT 2023
long diff = d2.getTime() - d1.getTime();
System.out.println(diff); // 70301134034
}
}
년, 월, 일, 시간, 분, 초 구하기
월(Month)은 각각 일(Day) 수가 다르기 때문에 구할 수 없다.
long Sec = (diff / 1000L) % 60;
long Min = (diff / (60 * 1000L)) % 60;
long Hour = (diff / (60 * 60 * 1000L)) % 24;
long Day = (diff / (24 * 60 * 60 * 1000L)) % 365;
long Year = diff / (365 * 24 * 60 * 60 * 1000L);
System.out.println(String.format("두 날짜 간 차이는 '%d년 %d일 %02d:%02d:%02d'입니다.",
Year, Day, Hour, Min, Sec));
// 두 날짜 간 차이는 '2년 83일 16:05:34'입니다.
728x90
728x90
'Programming > Java' 카테고리의 다른 글
[Error] Java : Import 후 bootstrap, js 파일 에러 해결하기 (0) | 2024.02.27 |
---|---|
[Java] 문자열에서 특정 문자 삭제/변환하기 : replace(), replaceAll() (0) | 2023.11.23 |
[Java] 정규 표현식을 이용한 개인정보 마스킹 처리 (0) | 2023.08.28 |
Comments