Notice
Recent Posts
Recent Comments
Link
투케이2K
117. (kotlin/코틀린) [유틸 파일] getDateMinus - 두 날짜 차이 계산 수행 실시 본문
[개발 환경 설정]
개발 툴 : AndroidStudio
개발 언어 : Kotlin
[소스 코드]
// TODO [SEARCH FAST] : [RETURN] getDateMinus : 두 날짜 차이 계산 수행 실시 : 날짜, 시, 분, 초 int 형 반환
fun getDateMinus(bigDate : String, smallDate : String) : Int {
/**
* // -----------------------------------------
* // [getDateMinus 메소드 설명]
* // -----------------------------------------
* 1. 날짜 형식 : yyyyMMddkkmmss 24시간 형태로 구성
* // -----------------------------------------
* 2. bigDate 큰 날짜 - smallDate 작은 날짜 연산 수행
* // -----------------------------------------
* 3. 리턴 형식 : 초 , 분 , 시간 , 일자 단위 선택 (int 형 반환)
* // -----------------------------------------
* 4. 인풋 예시 :
* - C_Util.getDateMinus("2022 02 10 18 30 15", "2022 02 10 18 30 15") // 동일
*
* - C_Util.getDateMinus("2022 02 10 18 30 15", "2022 02 10 18 30 10") // 초 [다름]
* - C_Util.getDateMinus("2022 02 10 18 30 15", "2022 02 10 18 25 15") // 분 [다름]
* - C_Util.getDateMinus("2022 02 10 18 30 15", "2022 02 10 17 30 15") // 시간 [다름]
* - C_Util.getDateMinus("2022 02 10 18 30 15", "2022 02 09 18 30 15") // 일자 [다름]
* - C_Util.getDateMinus("2022 02 10 18 30 15", "2022 01 10 18 30 15") // 월 [다름]
* - C_Util.getDateMinus("2022 02 10 18 30 15", "2021 02 10 18 30 15") // 연도 [다름]
* // -----------------------------------------
* */
// [초기 리턴 데이터 선언]
/**
* // -----------------------------------------
* // [getDateMinus 메소드 설명]
* // -----------------------------------------
* 1. 날짜 형식 : yyyyMMddkkmmss 24시간 형태로 구성
* // -----------------------------------------
* 2. bigDate 큰 날짜 - smallDate 작은 날짜 연산 수행
* // -----------------------------------------
* 3. 리턴 형식 : 초 , 분 , 시간 , 일자 단위 선택 (int 형 반환)
* // -----------------------------------------
* 4. 인풋 예시 :
* - C_Util.getDateMinus("2022 02 10 18 30 15", "2022 02 10 18 30 15") // 동일
*
* - C_Util.getDateMinus("2022 02 10 18 30 15", "2022 02 10 18 30 10") // 초 [다름]
* - C_Util.getDateMinus("2022 02 10 18 30 15", "2022 02 10 18 25 15") // 분 [다름]
* - C_Util.getDateMinus("2022 02 10 18 30 15", "2022 02 10 17 30 15") // 시간 [다름]
* - C_Util.getDateMinus("2022 02 10 18 30 15", "2022 02 09 18 30 15") // 일자 [다름]
* - C_Util.getDateMinus("2022 02 10 18 30 15", "2022 01 10 18 30 15") // 월 [다름]
* - C_Util.getDateMinus("2022 02 10 18 30 15", "2021 02 10 18 30 15") // 연도 [다름]
* // -----------------------------------------
*/
// [초기 리턴 데이터 선언]
var returnData = 0
var minusSec: Long = 0
var minusMin: Long = 0
var minusHour: Long = 0
var minusDay: Long = 0
// [인풋으로 들어온 값에 공백이 있는 경우 제거 실시]
var bigDates = bigDate.replace(" ", "")
var smallDates = smallDate.replace(" ", "")
// [로직 처리 실시]
try {
// [데이터 널 검증 실시]
if (C_Util.stringNotNull(bigDates) == true && C_Util.stringNotNull(smallDates) == true){
//[인풋으로 들어온 데이터가 int 형 인지 검증 수행]
var bigDate_NotNumber = false
var smallDate_NotNumber = false
for (i in 0 .. bigDates.length-1 step(1)) {
if (Character.isDigit(bigDates[i]) == false) { // 숫자가 아닌 경우
bigDate_NotNumber = true
}
}
for (j in 0 .. smallDates.length-1 step(1)) {
if (Character.isDigit(smallDates[j]) == false) { // 숫자가 아닌 경우
smallDate_NotNumber = true
}
}
if (bigDate_NotNumber == true || smallDate_NotNumber == true) { // 문자가 포함된 데이터 인 경우
Log.i("---","---")
Log.e("//===========//","================================================")
Log.i("","\n"+"[C_Util >> getDateMinus() :: 두 날짜 차이 계산 에러]")
Log.i("","\n"+"-----------------------------------------")
Log.i("","\n"+"[bigDate [인풋 날짜_1] :: "+bigDates+"]")
Log.i("","\n"+"-----------------------------------------")
Log.i("","\n"+"[smallDate [인풋 날짜_2] :: "+smallDates+"]")
Log.i("","\n"+"-----------------------------------------")
Log.i("","\n"+"[error [문자 에러] :: "+"비정상 데이터"+"]")
Log.e("//===========//","================================================")
Log.i("---","---")
}
else {
// [로직 처리 수행 실시]
val bigFormat = SimpleDateFormat("yyyyMMddkkmmss").parse(bigDates)
val smallFormat = SimpleDateFormat("yyyyMMddkkmmss").parse(smallDates)
// [초, 분, 시간, 일자 차이 계산 실시 >> long 타입]
minusSec = (bigFormat.time - smallFormat.time) / 1000 // [초]
minusMin = (bigFormat.time - smallFormat.time) / 60000 // [분]
minusHour = (bigFormat.time - smallFormat.time) / 3600000 // [시간]
minusDay = minusSec / (24 * 60 * 60) // [일자]
// TODO [리턴하려는 값을 선택 후 결과 반환]
returnData = minusMin.toInt() // [분]
//returnData = minusSec.toInt(); // [초]
}
}
else {
Log.i("---","---")
Log.e("//===========//","================================================")
Log.i("","\n"+"[C_Util >> getDateMinus() :: 두 날짜 차이 계산 에러]")
Log.i("","\n"+"-----------------------------------------")
Log.i("","\n"+"[bigDate [인풋 날짜_1] :: "+bigDates+"]")
Log.i("","\n"+"-----------------------------------------")
Log.i("","\n"+"[smallDate [인풋 날짜_2] :: "+smallDates+"]")
Log.i("","\n"+"-----------------------------------------")
Log.i("","\n"+"[error [널 에러] :: "+"비정상 데이터"+"]")
Log.e("//===========//","================================================")
Log.i("---","---")
}
}
catch (e: Exception) {
e.printStackTrace()
}
// [로그 출력 실시]
//*
Log.i("---","---")
Log.w("//===========//","================================================")
Log.i("","\n"+"[C_Util >> getDateMinus() :: 두 날짜 차이 결과 확인]")
Log.i("","\n"+"-----------------------------------------")
Log.i("","\n"+"[bigDate [인풋 날짜_1] :: "+bigDate+"]")
Log.i("","\n"+"[smallDate [인풋 날짜_2] :: "+smallDate+"]")
Log.i("","\n"+"-----------------------------------------")
Log.i("","\n"+"[minusSec [초] 차이 :: "+minusSec.toString()+"]")
Log.i("","\n"+"-----------------------------------------")
Log.i("","\n"+"[minusMin [분] 차이 :: "+minusMin.toString()+"]")
Log.i("","\n"+"-----------------------------------------")
Log.i("","\n"+"[minusHour [시간] 차이 :: "+minusHour.toString()+"]")
Log.i("","\n"+"-----------------------------------------")
Log.i("","\n"+"[minusDay [날짜] 차이 :: "+minusDay.toString()+"]")
Log.i("","\n"+"-----------------------------------------")
Log.i("","\n"+"[RETURN :: "+returnData.toString()+"]")
Log.w("//===========//","================================================")
Log.i("---","---")
// */
// [리턴 반환 실시]
return returnData
}
[결과 출력]
반응형
'Kotlin' 카테고리의 다른 글
Comments