250x250
Notice
Recent Posts
Recent Comments
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- 막내의막무가내 SQL
- 막내의막무가내 안드로이드
- 부스트코스에이스
- 막내의막무가내
- 막내의막무가내 코틀린
- 안드로이드 sunflower
- 프로그래머스 알고리즘
- 막내의막무가내 알고리즘
- 막내의 막무가내 알고리즘
- 막내의막무가내 코틀린 안드로이드
- Fragment
- 막내의막무가내 플러터
- 주택가 잠실새내
- 막내의막무가내 코볼 COBOL
- flutter network call
- 막내의막무가내 안드로이드 코틀린
- 주엽역 생활맥주
- 안드로이드
- 부스트코스
- 막내의막무가내 rxjava
- 막내의막무가내 안드로이드 에러 해결
- 막내의막무가내 프로그래밍
- 막내의 막무가내
- 막무가내
- 막내의막무가내 일상
- 막내의막무가내 플러터 flutter
- 막내의막무가내 목표 및 회고
- 안드로이드 Sunflower 스터디
- 프래그먼트
- 2022년 6월 일상
Archives
- Today
- Total
막내의 막무가내 프로그래밍 & 일상
[안드로이드] Android Kotlin Convert timestamp to Date , Date to timestamp Test (코틀린 타임스탬프 날짜 변환 테스트) , Android DatePickerDialog disable past date 본문
안드로이드/코틀린 & 아키텍처 & Recent
[안드로이드] Android Kotlin Convert timestamp to Date , Date to timestamp Test (코틀린 타임스탬프 날짜 변환 테스트) , Android DatePickerDialog disable past date
막무가내막내 2020. 7. 31. 00:58728x90
[2021-04-14 업데이트]
요즘 인턴이랑 진행중인 프로젝트들 하느라 시간이 부족해서 블로그 포스팅하고 일일 커밋이 엄청 줄었네요 흑.. ㅠㅠ
오랜만에 간단한 포스팅겸 기억노트 기록 남깁니다.
타임스탬프와 날짜 및 시간 변환하는거에 대해 테스트를 해봤습니다.
나중에 또 변환할일이 생기면 기억나게 기록합니당 ㅎㅎ
package com.mtjin.timestamptestrepo
import android.util.Log
import java.text.SimpleDateFormat
fun convertDateToTimestamp(date: String): Long {
val sdf = SimpleDateFormat("yyyy-MM-dd")
Log.d("TTTT Time -> ", sdf.parse(date).time.toString())
Log.d("TTT Unix -> ", (System.currentTimeMillis()).toString())
return sdf.parse(date).time
}
fun convertTimestampToDate(timestamp: Long) {
val sdf = SimpleDateFormat("yyyy-MM-dd-hh-mm")
val date = sdf.format(timestamp)
Log.d("TTT UNix Date -> ", sdf.format((System.currentTimeMillis())).toString())
Log.d("TTTT date -> ", date.toString())
}
그리고 안드로이드 날짜 선택 다이얼로그에서 오늘 이전의 날짜들은 선택을 막기 위한 구현 방법도 추가로 포스팅합니다.
val c: Calendar = Calendar.getInstance()
val dialog = DatePickerDialog(this, OnDateSetListener { view, year, month, dayOfMonth ->
val _year = year.toString()
val _month = if (month + 1 < 10) "0" + (month + 1) else (month + 1).toString()
val _date = if (dayOfMonth < 10) "0$dayOfMonth" else dayOfMonth.toString()
val _pickedDate = "$year-$_month-$_date"
Log.e("PickedDate: ", "Date: $_pickedDate") //2019-02-12
val tmp = convertDateToTimestamp(_pickedDate)
convertTimestampToDate(tmp)
}, c.get(Calendar.YEAR), c.get(Calendar.MONTH), c.get(Calendar.MONTH))
dialog.datePicker.minDate = System.currentTimeMillis() - 1000
dialog.show()
[2020업데이트]
TimeConverter.kt 파일입니다.
시간변환 관련된 함수들을 모아놨습니다.
저 같은 경우 시간을 DateFormat 부터 시작해서 시간 관련되어 변환할게 많다보니 좀 뒤죽박죽 입니다. 현재 시간도 System.currentTimeMillis() 로 받고
다음 시간 관련 프로젝트에서는 Joda Time, Calendar 를 사용해서 최대한 깔끔하게 시간과 날짜를 처리할 수 있도록 해야겠습니다. ㅇㅅㅇ -> youngest-programming.tistory.com/473 에 적용
참고할 사이트 : github.com/Kotlin/kotlinx-datetime
@file:Suppress("RECEIVER_NULLABILITY_MISMATCH_BASED_ON_JAVA_ANNOTATIONS")
package com.mtjin.nomoneytrip.utils
import android.text.format.DateFormat
import java.text.SimpleDateFormat
import java.util.*
import kotlin.random.Random
// 날짜만 타임스탬프 변환 2020-01-01 - timestamp
fun String.convertDateToTimestamp(): Long =
SimpleDateFormat("yyyy-MM-dd", Locale.KOREA).parse(this).time
fun Long.convertTimestampToDate(): String = DateFormat.format("yyyy-MM-dd", this).toString()
fun Long.convertTimestampToPointFullDate(): String =
DateFormat.format("yyyy.MM.dd", this).toString()
// 날짜,시간,분 포함된 타임스탬프 변환 2020-01-01-22-30 - timestamp
fun String.convertDateFullToTimestamp(): Long =
SimpleDateFormat("yyyy-MM-dd-HH:mm", Locale.KOREA).parse(this).time
fun Long.convertTimestampToDateFull(): String =
DateFormat.format("yyyy-MM-dd-HH:mm", this).toString()
fun Long.convertCurrentTimestampToDateTimestamp(): Long =
this.convertTimestampToDate().convertDateToTimestamp()
// timestamp -> 13:40
fun Long.convertTimestampToTime(): String = DateFormat.format("HH:mm", this).toString()
//fun Long.convertTimesToTimestamp(): Long = DateFormat.format("HH:mm", this).toString()
// 시간 한자리면 앞에 0 붙여주어 변환
fun String.convertHourDoubleDigit(): String = if (this.length < 2) "0$this" else this
// 분 한자리면 앞에 0 붙여주어 반환
fun String.convertMinuteDoubleDigit(): String = if (this.length < 2) "0$this" else this
// 한자리 숫자면 두자리로 변환
fun String.convertSingleToDoubleDigit(): String = if (this.length < 2) "0$this" else this
fun Long.convertTimestampToHour(): Int = DateFormat.format("HH", this).toString().toInt()
fun Long.convertTimestampToMinute(): Int = DateFormat.format("mm", this).toString().toInt()
fun Int.convertNextHour(): Int = if (this == 23) 0 else this + 1
fun Int.convertNextMinute(): Int = if (this == 59) 0 else this + 1
// 현재 Year
fun getCurrentYear(): Int = Calendar.getInstance().get(Calendar.YEAR)
// 현재 Month
fun getCurrentMonth(): Int = Calendar.getInstance().get(Calendar.MONTH) + 1
// 현재 Day
fun getCurrentDay(): Int = Calendar.getInstance().get(Calendar.DAY_OF_MONTH)
// timestamp -> year
fun Long.convertTimestampToYear(): Int {
val cal: Calendar = Calendar.getInstance()
cal.timeInMillis = this
return cal[Calendar.YEAR]
}
// timestamp -> month
fun Long.convertTimestampToMonth(): Int {
val cal: Calendar = Calendar.getInstance()
cal.timeInMillis = this
return cal[Calendar.MONTH] + 1
}
// timestamp -> day
fun Long.convertTimestampToDay(): Int {
val cal: Calendar = Calendar.getInstance()
cal.timeInMillis = this
return cal[Calendar.DAY_OF_MONTH]
}
// 1시간 뒤 타임스탬프
fun Long.convertNextHourTimestamp(): Long = this + (60 * 60 * 1000)
// 2020, 1, 20 -> timestamp
fun convertDateToTimestamp(_year: Int, _month: Int, _day: Int): Long {
val month = _month.toString().convertSingleToDoubleDigit().toInt()
val day = _day.toString().convertSingleToDoubleDigit().toInt()
val date = "$_year-$month-$day"
return date.convertDateToTimestamp()
}
// timestamp -> 9.6~9.8
fun convertTimestampToTerm(startTimestamp: Long, endTimestamp: Long): String {
return DateFormat.format("MM-dd", startTimestamp)
.toString() + "~" + DateFormat.format("MM-dd", endTimestamp).toString()
}
// FCM 메시지로 사용
fun convertTimeToFcmMessage(date: Long, startTime: Long): String =
date.convertTimestampToDate() + " " + startTime.convertTimestampToTime() + "에 회의실 예약이 있습니다."
fun combineTimestamp(x: Long, y: Long) = (x.toString() + y.toString()).toLong()
// 랜덤키값
fun getRandomKey(): Long = Random(System.currentTimeMillis()).nextLong(100000, 999999)
// 타임스탬프
fun getTimestamp(): Long = System.currentTimeMillis()
댓글과 공감은 큰 힘이 됩니다. 감사합니다. !!
728x90
'안드로이드 > 코틀린 & 아키텍처 & Recent' 카테고리의 다른 글
[안드로이드] Lottie Animation 사용법 (0) | 2020.08.02 |
---|---|
[안드로이드] 안드로이드 Collapsing Toolbar Layout with Constraint Layout, NestedScroll 구현 (0) | 2020.08.02 |
[안드로이드] DI 대거(Dagger2) 공부자료 및 적용해보기 (Koin -> Dagger) (0) | 2020.07.19 |
[안드로이드] 안드로이드 BottomSheetDialog 콜백 구현 (10) | 2020.07.11 |
[안드로이드] 기억노트 - 다이얼로그 프래그먼트 레이아웃 기록 (0) | 2020.07.07 |
Comments