Android에서 Date관련된 작업을 진행할때가 있는데 그때 사용될 수 있는 현재시간구하기, 시간비교하기에 대해서 알아보겠습니다.
[현재 시간 구하기]
/** 현재시간 구하기 ["yyyy-MM-dd HH:mm:ss"] (*HH: 24시간)*/
fun getTime(): String {
var now = System.currentTimeMillis()
var date = Date(now)
var dateFormat = SimpleDateFormat("yyyy-MM-dd HH:mm:ss")
var getTime = dateFormat.format(date)
return getTime
}
[현재날짜와 시간차 비교하여 텍스트로 반환]
**보통 어떤 게시글에 들어가는 시간값 비교한 내용을 출력할때 사용**
/** 두 날짜 사이의 간격 계산해서 텍스트로 반환 */
fun intervalBetweenDateText(beforeDate: String): String {
val nowFormat = SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(getTime())
val beforeFormat = SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(beforeDate)
val diffMilliseconds = nowFormat.time - beforeFormat.time
val diffSeconds = diffMilliseconds / 1000
val diffMinutes = diffMilliseconds / (60 * 1000)
val diffHours = diffMilliseconds / (60 * 60 * 1000)
val diffDays = diffMilliseconds / (24 * 60 * 60 * 1000)
val nowCalendar = Calendar.getInstance().apply { time = nowFormat }
val beforeCalendar = Calendar.getInstance().apply { time = beforeFormat }
val diffYears = nowCalendar.get(Calendar.YEAR) - beforeCalendar.get(Calendar.YEAR)
var diffMonths = diffYears * 12 + nowCalendar.get(Calendar.MONTH) - beforeCalendar.get(Calendar.MONTH)
if (nowCalendar.get(Calendar.DAY_OF_MONTH) < beforeCalendar.get(Calendar.DAY_OF_MONTH)) {
// 현재 날짜의 일(day) 값이 이전 날짜의 일(day) 값보다 작은 경우에만 월 차이를 1 감소시킴
// Ex) 5.31일과 6.2일은 2일차이지만 month가 1로 계속 나오는 이슈해결을 위해서
diffMonths--
}
if (diffYears > 0) {
return "${diffYears}년 전"
}
if (diffMonths > 0) {
return "${diffMonths}개월 전"
}
if (diffDays > 0) {
return "${diffDays}일 전"
}
if (diffHours > 0) {
return "${diffHours}시간 전"
}
if (diffMinutes > 0) {
return "${diffMinutes}분 전"
}
if (diffSeconds > 0) {
return "${diffSeconds}초 전"
}
if(diffSeconds > -1){
return "방금"
}
return ""
}
[날짜형식변경]
/** 날짜 형식변경 */
fun changeDateFormat(date: String): String{
// ["yyyy-MM-dd'T'HH:mm:ss.SSS'Z'"] -> ["yyyy-MM-dd HH:mm"]
try{
val old_format = SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'") // 받은 데이터 형식
old_format.timeZone = TimeZone.getTimeZone("Asia/Seoul")
val new_format = SimpleDateFormat("yyyy-MM-dd HH:mm") // 바꿀 데이터 형식
val old_date = old_format.parse(date) //ex) "2016-11-01T15:25:31.000Z" // 000 - 밀리 세컨드
return new_format.format(old_date)
}catch (e: Exception) {
e.printStackTrace()
}
return ""
}
[date 날짜에서 하루 이전 날짜로 설정하기]
date.setDate(date.getDate()-1);
[날짜 비교하기]
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm",
java.util.Locale.getDefault()); Date date1 = dateFormat.parse("2014-01-29 13:30");
Date date2 = dateFormat.parse("2014-01-30 13:30");
date1.after(date2)
//date1이 date2보다 이후 일때 true, 아니면 false
[string -> date로 변환]
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm", java.util.Locale.getDefault());
String strDate = "2021-01-01 13:30";
Date date = dateFormat.parse(strDate);
// 임시로 지정한 "yyyy-MM-dd HH:mm"와 "2014-01-29 13:30" 글씨끼리 형식이 같아야 함!
[date -> string로 변환]
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm", java.util.Locale.getDefault());
Date date = new Date();
String strDate = dateFormat.format(date);
'🖥 Programming > 📱 Android (Java)' 카테고리의 다른 글
[안드로이드] TextView에서 자동으로 이루어지는 Word wrap을 막는 방법 (0) | 2021.08.27 |
---|---|
[Android] equals, equalsIgnoreCase 차이 (0) | 2021.08.26 |
[android] 투명도 설정하는 방법 (0) | 2021.08.26 |
[Android] LinearLayout orientation에 따른 layout배치 (0) | 2021.08.24 |
안드로이드 Log 종류 및 사용법 (0) | 2021.08.23 |
[Android] 안드로이드 Glide로 gif파일 재생하기 (0) | 2021.08.23 |
[Android] TextView(텍스트뷰) singleLine / ellipsize 사용법 (0) | 2021.08.23 |
[Android] TextView에 이미지 설정하기(drawable) (0) | 2021.08.22 |