Notice
Recent Posts
Recent Comments
Archives
반응형
«   2025/01   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
Today
Total
01-23 09:15
250x250
관리 메뉴

꿈꾸는 개발자의 블로그

[Java] Calendar, Date, SimpleDateFormat : 두 날짜 간 차이 계산하기 본문

Programming/Java

[Java] Calendar, Date, SimpleDateFormat : 두 날짜 간 차이 계산하기

aldrn29 2023. 10. 24. 14:29

두 날짜 간 차이 계산하기

두 지정 날짜의 차이를 계산하는 방법이다. Calendar, Date, SimpleDateFormat을 이용한 방법이 있다.

 

  1. Calendar 인스턴스를 이용하여 날짜를 set() 해주고, getTimeInMillis() 함수를 사용하여 두 날짜의 차이를 구한다.
  2. SimpleDateFormat을 통해 String 타입의 날짜를 Date로 받고, getTime() 함수를 통해 두 날짜의 차이를 구한다.
  3. 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
Comments