728x90
안녕하세요.
안드로이드에서 시간을 표현해야 할 다양한 경우가 있습니다.
그 중 유투브 댓글에서 시간을 표현하는 방법인 'x분 전', 'x시간 전', 'x일 전', 'x주 전' 등과 같은 포맷으로 변경하는 방법을 알아보겠습니다.
1. string to millisecond
@SuppressLint("SimpleDateFormat")
fun dateTimeToMillSec(dateTime: String): Long{
var timeInMilliseconds: Long = 0
val sdf = SimpleDateFormat("yyyy-MM-dd HH:mm:ss")
try {
val mDate = sdf.parse(dateTime)
timeInMilliseconds = mDate.time
} catch (e: ParseException) {
e.printStackTrace()
}
return timeInMilliseconds
}
스트링으로 저장된 값을 millisecond 단위로 변경하는 메서드입니다.
위의 형식과 다르다면 "yyyy-MM-dd HH:mm:ss" <- 이 부분을 필요한 형식으로 변경해서 사용하시면 됩니다.
2. 현재 시간과 계산
fun calculationTime(createDateTime: Long): String{
val nowDateTime = Calendar.getInstance().timeInMillis //현재 시간 to millisecond
var value = ""
val differenceValue = nowDateTime - createDateTime //현재 시간 - 비교가 될 시간
when {
differenceValue < 60000 -> { //59초 보다 적다면
value = "방금 전"
}
differenceValue < 3600000 -> { //59분 보다 적다면
value = TimeUnit.MILLISECONDS.toMinutes(differenceValue).toString() + "분 전"
}
differenceValue < 86400000 -> { //23시간 보다 적다면
value = TimeUnit.MILLISECONDS.toHours(differenceValue).toString() + "시간 전"
}
differenceValue < 604800000 -> { //7일 보다 적다면
value = TimeUnit.MILLISECONDS.toDays(differenceValue).toString() + "일 전"
}
differenceValue < 2419200000 -> { //3주 보다 적다면
value = (TimeUnit.MILLISECONDS.toDays(differenceValue)/7).toString() + "주 전"
}
differenceValue < 31556952000 -> { //12개월 보다 적다면
value = (TimeUnit.MILLISECONDS.toDays(differenceValue)/30).toString() + "개월 전"
}
else -> { //그 외
value = (TimeUnit.MILLISECONDS.toDays(differenceValue)/365).toString() + "년 전"
}
}
return value
}
1번 메서드를 사용해서 얻은 값을 2번 메서드의 파라미터 자리에 넣어 사용하면 결과값을 얻을 수 있습니다.
3. 사용
val testDateTime1 = "2022-05-03 12:05:06"
val testDateTime2 = "2022-06-20 16:25:56"
val testDateTime3 = "2022-07-03 12:05:06"
val testDateTime4 = "2021-06-20 16:25:56"
val result1 = calculationTime(dateTimeToMillSec(testDateTime1))
val result2 = calculationTime(dateTimeToMillSec(testDateTime2))
val result3 = calculationTime(dateTimeToMillSec(testDateTime3))
val result4 = calculationTime(dateTimeToMillSec(testDateTime4))
테스트를 위해 임의의 날짜를 만들고
메서드를 사용해줍니다.
4. 결과
잘 계산된 모습을 확인할 수 있습니다.
'안드로이드 코틀린' 카테고리의 다른 글
[Kotlin][Android] 사용한 오픈소스 라이선스 표시하기 (2) | 2022.08.28 |
---|---|
[Kotlin][Android] 터치 제스처 감지 (Gesture Detector) (0) | 2022.08.13 |
[Android][Kotlin] Animation으로 Lottie를 사용해보기 (0) | 2022.07.28 |
[Kotlin][Android] 안드로이드 연속 클릭 막기 (0) | 2022.07.22 |
[Kotlin][Android] 파일 쓰고 불러오기 (0) | 2022.07.13 |