투케이2K

549. (kotlin/코틀린) [유틸 파일] getDateCalTimeStamp : 현재 날짜 및 시간에서 특정 시간 더하기 및 빼기 수행 한 타임스탬프 값 반환 본문

Kotlin

549. (kotlin/코틀린) [유틸 파일] getDateCalTimeStamp : 현재 날짜 및 시간에서 특정 시간 더하기 및 빼기 수행 한 타임스탬프 값 반환

투케이2K 2025. 4. 4. 19:15

[개발 환경 설정]

개발 툴 : AndroidStudio

개발 언어 : Kotlin

 

[소스 코드]

// --------------------------------------------------------------------------------------
[개발 및 테스트 환경]
// --------------------------------------------------------------------------------------

- 언어 : Java / Kotlin

- 개발 툴 : AndroidStudio

- 기술 구분 : 유틸 파일 / getDateCalTimeStamp

// --------------------------------------------------------------------------------------





// --------------------------------------------------------------------------------------
[소스 코드]
// --------------------------------------------------------------------------------------

fun getDateCalTimeStamp(yyyy: String, MM: String, dd: String, HH: String, mm: String, ss: String): Array<String> {

    /**
      * // -----------------------------------------
      * [getDateCalTimeStamp 메소드 설명]
      * // -----------------------------------------
      * 1. 현재 날짜 및 시간에서 특정 시간 더하기 및 빼기 수행 한 타임 스탬프 값 반환 수행
      * // -----------------------------------------
      * 2. 호출 방식 :
      *
      * C_Util.getDateCalTimeStamp("5", "", "", "", "", "") // [연]
      * C_Util.getDateCalTimeStamp("", "5", "", "", "", "") // [월]
      * C_Util.getDateCalTimeStamp("", "", "5", "", "", "") // [일]
      * C_Util.getDateCalTimeStamp("", "", "", "5", "", "") // [시]
      * C_Util.getDateCalTimeStamp("", "", "", "", "5", "") // [분]
      * C_Util.getDateCalTimeStamp("", "", "", "", "", "5") // [초]
      * // -----------------------------------------
      * 3. 리턴 데이터 :
      *
      * 현재 날짜 및 시간 값 / 타임 스탬프 13 자리 : 배열 0 번지, 배열 1 번지
      *
      * 계산 날짜 및 시간 값 / 타임 스탬프 13 자리 : 배열 2 번지, 배열 3 번지
      *
      * 예시 : 5초 이전 : [2025-04-04 09:58:17, 1743728297169, 2025-04-04 09:58:12, 1743728292169]
      * // -----------------------------------------
      */


    // [리턴 변수 선언]
    val returnData = Array<String>(4, {""})
    var M_LOG = ""


    // [로직 처리 실시]
    try {

        // [현재 날짜 및 시간 구하기]
        val time = System.currentTimeMillis()
        val dayTime = SimpleDateFormat("yyyy-MM-dd HH:mm:ss", Locale.KOREA)
        val nowDate = Date(time)
        val nowDateString = dayTime.format(nowDate)


        // [Calendar 인스턴스 생성]
        val cal = Calendar.getInstance()
        cal.time = nowDate // [지금 시간 지정]


        // TODO [배열에 현재 날짜 및 시간 값 저장]
        returnData[0] = nowDateString.toString()
        returnData[1] = Timestamp(cal.timeInMillis).time.toString()


        // [인풋 값에 따라서 현재 및 날짜 시간 더하기, 빼기]
        if (stringIsNumber(yyyy) == true) { // [연] : [모두 문자 구성]
            cal.add(Calendar.YEAR, yyyy.toInt())
        }
        if (stringIsNumber(MM) == true) { // [월] : [모두 문자 구성]
            cal.add(Calendar.MONTH, MM.toInt())
        }
        if (stringIsNumber(dd) == true) { // [일] : [모두 문자 구성]
            cal.add(Calendar.DATE, dd.toInt())
        }
        if (stringIsNumber(HH) == true) { // [시] : [모두 문자 구성]
            cal.add(Calendar.HOUR, HH.toInt())
        }
        if (stringIsNumber(mm) == true) { // [분] : [모두 문자 구성]
            cal.add(Calendar.MINUTE, mm.toInt())
        }
        if (stringIsNumber(ss) == true) { // [초] : [모두 문자 구성]
            cal.add(Calendar.SECOND, ss.toInt())
        }

        val newFormat = SimpleDateFormat("yyyy-MM-dd HH:mm:ss", Locale.KOREA)
        val newDateString = newFormat.format(cal.time)


        // TODO [배열에 계산 한 날짜 및 시간 값 저장]
        returnData[2] = newDateString.toString()
        returnData[3] = Timestamp(cal.timeInMillis).time.toString()

        M_LOG = "Success Date Cal : $nowDateString / $newDateString"

    } catch (e: Exception) {
        S_Log._printStackTrace_(null, S_FinalData.LOG_BUG_STATE, null, e)
        M_LOG = "Exception : " + e.message.toString()
    }


    // [로그 출력 실시]
    //*
    // ===============================================================
    S_Log._D_("현재 날짜 및 시간에서 특정 시간 더하기 및 빼기 수행 한 타임스탬프 값 반환 수행", arrayOf(
        "INPUT [yyyy] :: $yyyy",
        "INPUT [MM] :: $MM",
        "INPUT [dd] :: $dd",
        "INPUT [HH] :: $HH",
        "INPUT [mm] :: $mm",
        "INPUT [ss] :: $ss",
        "M_LOG :: $M_LOG",
        "RETURN :: " + returnData.contentToString().toString()
    ))


    // ===============================================================
    // */


    // [리턴 반환 실시]
    return returnData
}

// --------------------------------------------------------------------------------------





// --------------------------------------------------------------------------------------
[결과 출력]
// --------------------------------------------------------------------------------------

D///===========//: ================================================
I/: [LOG :: CLASS PLACE :: C_Util.getDateCalTimeStamp]
I/: ----------------------------------------------------
I/: [LOG :: DESCRIPTION :: 현재 날짜 및 시간에서 특정 시간 더하기 및 빼기 수행 한 타임스탬프 값 반환 수행]
I/: ----------------------------------------------------
I/: [LOG :: INPUT [yyyy] :: ]
I/: ----------------------------------------------------
I/: [LOG :: INPUT [MM] :: ]
I/: ----------------------------------------------------
I/: [LOG :: INPUT [dd] :: ]
I/: ----------------------------------------------------
I/: [LOG :: INPUT [HH] :: ]
I/: ----------------------------------------------------
I/: [LOG :: INPUT [mm] :: ]
I/: ----------------------------------------------------
I/: [LOG :: INPUT [ss] :: -5]
I/: ----------------------------------------------------
I/: [LOG :: M_LOG :: Success Date Cal : 2025-04-04 09:58:17 / 2025-04-04 09:58:12]
I/: ----------------------------------------------------
I/: [LOG :: RETURN :: [2025-04-04 09:58:17, 1743728297169, 2025-04-04 09:58:12, 1743728292169]]
D///===========//: ================================================

// --------------------------------------------------------------------------------------





// --------------------------------------------------------------------------------------
[참고 사이트]
// --------------------------------------------------------------------------------------

https://blog.naver.com/kkh0977/222663026688?trackingCode=blog_bloghome_searchlist

// --------------------------------------------------------------------------------------
 
반응형
Comments