본문 바로가기

프로그래밍

[Kotlin] 두 날짜간 차이 구하기 timeInMillis

반응형

코틀린으로 두 날짜간 차이 구하는 방법 입니다.

몇 일 남았는지 d-day 를 구할 수 있죠

 

첫번째 날은 2020년 8월 13일이고

두번째 날은 2020년 8월 21일 입니다.

 

두 날짜를 timeInMillis로 변환 시켜서 

몇 일 차이 나는지 구하겠습니다.

// 두 날짜 차이 계산
fun fewDay(): Long {

	// 첫번째 날
	val beginDay = Calendar.getInstance().apply {
		set(Calendar.YEAR, 2020)
		set(Calendar.MONTH, 8)
		set(Calendar.DAY_OF_MONTH, 13)
	}.timeInMillis
	
	// 두번째 날
	val lastDay = Calendar.getInstance().apply {
		set(Calendar.YEAR, 2020)
		set(Calendar.MONTH, 8)
		set(Calendar.DAY_OF_MONTH, 21)
	}.timeInMillis
	
	val fewDay = getIgnoredTimeDays(lastDay) - getIgnoredTimeDays(beginDay)
        
	return fewDay / (24*60*60*1000)
}

// 시간, 분, 초, 밀리초 제외 시키기
fun getIgnoredTimeDays(time: Long): Long {
	return Calendar.getInstance().apply {
		timeInMillis = time
        
		set(Calendar.HOUR_OF_DAY, 0)
		set(Calendar.MINUTE, 0)
		set(Calendar.SECOND, 0)
		set(Calendar.MILLISECOND, 0)
	}.timeInMillis
}

fewDay() 함수는 두 날짜간 차이를 계산 하는것이고

getIgnoredTimeDays() 함수는 시간, 분, 초, 밀리초를 0으로 만들어 제거 합니다.

제거하는 이유는 첫번째날과 두번째 날이 시간까지 포함이 되어 있을 수 있기 때문입니다.

 

계산 방법

1. 첫번째 날과 두번째날을 Calendar 클래스를 이용해 timeInMillis로 변환 합니다.

 

이 때 getIgnoredTimeDays 함수를 이용하여 시간, 분, 초를 제외 시킵니다.

ex) 20년 8월 21일 13시 15분 23초 인경우 1597983323000

 

첫번째날 : 1597244400000

두번째날 : 1597935600000

 

 

2. 두번째날과 첫번째날을 뺍니다.

1597935600000 - 1597244400000 = 691200000

 

3. 하루(24시간) * 60분 * 60초 *  1/1000초를 계산 합니다.

691200000 / (24*60*60*1000) = 8

 

4. 8일 차이 계산 결과가 나옵니다.

반응형