반응형
코틀린으로 두 날짜간 차이 구하는 방법 입니다.
몇 일 남았는지 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일 차이 계산 결과가 나옵니다.
반응형
'프로그래밍' 카테고리의 다른 글
[JAVA] 자바 숫자 단위 10K, 1M, 1B 숫자를 줄여 표기하기 (0) | 2021.02.01 |
---|---|
[Kotlin]코틀린 해당 월의 일(day)갯수 계산 (0) | 2021.01.15 |
[Kotlin] 안드로이드 앱 비밀번호 잠금 구현 (0) | 2020.05.10 |
[Kotlin] 안드로이드 알람 매니저 알람설정 (0) | 2020.03.27 |