막무가내 삽질 블로그
Room에 저장된 날짜와 현재날짜 비교 본문
728x90
기존에는 날짜를 저장할 때 string으로 저장했었다. 다시 불러올 때 timestamp로 변환해 현재 날짜와 비교해서 로직을 처리 했었다. 하지만 중복되는 코드를 볼 수 있었고 또한 룸에서 가져올 때 ORDER BY time DESC 했었을 때 문제점은 12시가 제일 높게 인식한다. (yy-mm-dd hh.mm.ss a 기준)
이 문제를 해결 하기 위해 long 타입으로 넣으면 간단하게 해결할 수 있었고 코드중복을 줄일 수 있었다.
기존 테스트 코드
private lateinit var local: String // 오늘
fun main() {
getTime()
// 현재 날짜 가져오기
val today = SimpleDateFormat("yy년 MM월 dd일", Locale.KOREA)
val date = Date()
val tz = TimeZone.getTimeZone("Asia/Seoul")
today.timeZone = tz
val time = today.format(date)
// 타임스탬프로 변환
val todayTimestamp = today.parse(time).time
// 로컬 DB 가져와서 타임스탬프로 변환
val db = local.split(" : ")
val start = today.parse(db[0]).time
// 날짜 비교
val diff = (todayTimestamp - start)
val check = diff / (24*60*60*1000)
println("$todayTimestamp, $start, 일수차: $check")
}
private fun getTime() {
val date = Date()
val year = SimpleDateFormat("20년 02월 02일 : hh시 mm분 ss초 a")
val tz = TimeZone.getTimeZone("Asia/Seoul")
year.timeZone = tz
local = year.format(date)
}
변경 코드
@BindingAdapter("noteTime")
fun noteTime(view: TextView, url: Long) {
val now = System.currentTimeMillis()
val nowDate = Date(now)
val localDate = Date(url)
val dt = SimpleDateFormat("yy-MM-dd")
val tz = TimeZone.getTimeZone("Asia/Seoul")
dt.timeZone = tz
val nowTime = dt.format(nowDate)
val localTime = dt.format(localDate)
val nowTimestamp = dt.parse(nowTime).time
val localTimestamp = dt.parse(localTime).time
val check = (nowTimestamp - localTimestamp)
val diff = check / (24 * 60 * 60 * 1000)
when (diff) {
/* .. 처리 .. */
}
}
'Android' 카테고리의 다른 글
Adobe XD 에서 안드로이드로 이미지 보내기 (0) | 2020.04.15 |
---|---|
안드로이드 앱 포그라운드, 백그라운드 상태 확인하기 (0) | 2020.04.15 |
Android Room Database - Kotlin (0) | 2020.03.01 |
Android ViewModel + LiveData + Data Binding (0) | 2020.03.01 |
Android Jetpack Navigation (0) | 2020.03.01 |
Comments