[Android/Kotlin] [Trouble Shooting] Datetime

1. 상황

  • 개발 중 현재 시간을 받아와 결제를 진행하는 코딩을 하던 중 은행 점검시간엔 결제가 안되는 코드를 작성하려고 함
  • 초기의 코드
class Datetime {
    val currentTime = LocalDateTime.now() //현재시간 받아오기
    val formatter = DateTimeFormatter.ofPattern("현재 시각은 HH시:mm분 입니다.") //출력형식 지정
    val formattedTime = currentTime.format(formatter) //현재시간 출력형식에 맞춰 저장
}

2. 시도

  • 원하는 시간의 범위를 설정할 방법을 구글링을 통해 학습!
  • 단순히 if문이 아닌 원하는 점검시간만을 나타내는 함수 따로 작성

3. 해결

  • Boolean의 값을 갖는 점검시간 함수(inspectionFun)를 구현해 점검시간(inspectionTime)을 구현
  • tartTime(22:00), endTime(22:30)을 지정해주어 return
  • inspection함수를 작성해 점검시간일 때만 정상적으로 결제가 가능하도록 구현
class Datetime {
    val currentTime = LocalDateTime.now() //현재시간 받아오기
    val formatter = DateTimeFormatter.ofPattern("현재 시각은 HH시:mm분 입니다.") //출력형식 지정
    val formattedTime = currentTime.format(formatter) //현재시간 출력형식에 맞춰 저장

    val inspectionTime = inspectionFun(currentTime)// 점검시간 확인해주는 함수

    fun inspection() {
        if (inspectionTime) {
            println(formattedTime)
            println("은행 점검시간인 22시 00분 ~ 22시 30분이므로 결제가 불가능합니다.")
        } else {
            println(formattedTime)
            println("결제가 가능합니다!")
        }
    }
}
fun inspectionFun(currentTime: LocalDateTime): Boolean {
    //점검시간 구간 설정 22:00~22:30분!!
    val startTime = currentTime.withHour(22).withMinute(0).withSecond(0) // 22:00
    val endTime = currentTime.withHour(22).withMinute(30).withSecond(0) // 22:30

    return currentTime.isAfter(startTime) && currentTime.isBefore(endTime)// return값 설정
    //만약 새벽으로 시간이 넘어가서 EndTime이 StartTime보다 빠르게 되면 [&&] -> [||]로 수정하시면됩니당
}
fun main()
{
  Datetime().inspection() //호출
}

4. 알게된점


© 2023. All rights reserved.

by SoftyChoo