이번에는 Date Format에 대하여 알아보겠습니다 📆📆
다음과 같은 내용들을 이야기해보려고 합니다.
'SimpleDateForamt' , 'LocalDateTime' , 'DateTimeFormatter' , 'yyyy' vs 'YYYY'
SimpleDateFormat
먼저 SimpleDateForamt을 사용해봅시다.
// SimpleDateFormat
val dateFormat = "yyyyMMdd HH:mm"
val date = Date(System.currentTimeMillis())
val simpleDateFormat = SimpleDateFormat(dateFormat)
val simpleDate: String = simpleDateFormat.format(date)
val simpleDateParse: Date = simpleDateFormat.parse(simpleDate)
// simpleDate = 20221109 21:59
// simpleDateParse = Wed Nov 09 21:59:00 GMT+09:00 2022
SimpleDateFormat을 사용하기 위해서는
표현 방식을 먼저 정해야 합니다.
저는 날짜 표현 방식을 dateForamt = "yyyyMMdd HH:mm"으로 했습니다
이 표현방식은 원하는 형태로 적용하시면 됩니다.
(ex : yyyyMMdd, yyyy-MM-dd hh:mm:ss .... 자세한 내용은 아래 참조)
그 후 System.currentTimeMillis()를 통하여 현재시간 값을 세팅합니다.
현재 시간값을 String로 표현하려면 SimpleDateFormat.format(현재 시간 값 Date)
위의 simpleDate 변수 값입니다.
String으로 표현된 현재 시간 값을 다시 Date형식으로 되돌린 형태가
SimpleDateFormat.parse(String값으로 변환된 현재 시간 값)
위의 simpleDateParse 변수 값입니다.
위의 예제에서 보시면
val dateFormat = "yyyyMMdd HH:mm"
데이터 형식 표현할 때 yyyy YYYY 두 가지 표현이 가능합니다.
(yyyyMMdd vs YYYYMMdd)
실제로 두가지 방식으로 날짜 데이터를 확인해 보면
날짜 데이터 값이 다른 경우가 발생합니다.
이게 무슨 일일까요??
대문자 Y의 경우 Week year Component를 사용하여
365 / 7 = 52.14.....
1년은 52.14주로 계산하고 52주가 넘어가게 된다면 1년 후라고 계산합니다.
가끔 12월 마지막 주가 한주 넘어간다면 (53주) 그렇다면 실제 연도보다 1년 차이가 발생하게 됩니다.
일반적인 상황에서는 DateFormat을 사용할 때 yyyy를 사용해야 할 것 같습니다.
추가적으로 저는 Kotlin Extension을 활용하여
조금더 간단하게 사용합니다.
(개발자는 시간이 생명이니까요!)
fun String.getTimeNow(): String {
return try {
val date = Date(System.currentTimeMillis())
val simpleDateFormat = SimpleDateFormat(this)
simpleDateFormat.format(date)
} catch (e: Exception) {
L.e(e.message)
""
}
}
var nowDate: String = "yyyyMMdd".getTimeNow()
kotlin Extension
LocalDateTime / LocalDate
이번에는 LocalDateTime, LocalDate를 사용해보겠습니다.
// LocalDate / LocalDateTime
val localDateTime: LocalDateTime = LocalDateTime.now()
val localDate : LocalDate = LocalDate.now()
val localDateOf: LocalDate = LocalDate.of(2022,11,13)
// localDateTime = 2022-11-09T21:59:54.997537
// localDate = 2022-11-09
// localDateOf = 2022-11-13
localDateTime를 사용하면 연도 월 일 시 분 초까지의 데이터를 출력합니다.
localDate는 말 그대로 날짜에 대한 노출입니다.
마지막으로 LocalDate.of("")를 사용하면 원하는 날짜 데이터를 출력할 수 있습니다.
(11월 13일은 제 생입입니다!! 🎂🎂)
val localDateTime: LocalDateTime = LocalDateTime.now()
val dayOfWeek = localDateTime.dayOfWeek
val month = localDateTime.month
// dayOfWeek = WEDNESDAY
// month = NOVEMBER
추가적으로 LocalDateTime 함수들을 이용하여
. dayOfWeek .month 등을 활용하여 해당 날짜 데이터의 값들 확인 가능합니다.
DateTimeFormatter
💁♂️💁♂️
val current = LocalDateTime.now()
val formatter = DateTimeFormatter.ISO_DATE
val formatted: String = current.format(formatter)
// formatted = 2022-11-09
DateTimeFormatter의 Foramat 종류는 아래의 표와 같습니다.
DateTimeFormatter | 출력 예제 |
ISO_DATE | 2022-11-09 |
ISO_TIME | 21:59:54.9 |
ISO_DATE_TIME | 2022-11-09T21:59:54.9 |
ISO_LOCAL_DATE | 2022-11-09 |
ISO_LOCAL_TIME | 21:59:54.9 |
ISO_LOCAL_DATE_TIME | 2022-11-09T21:59:54.9 |
DateTimeFormatter.ofPattern을 활용하여 더 다양항 형태로 날짜 표현이 가능합니다.
val currentTime = LocalDateTime.now()
val pattern = DateTimeFormatter.ofPattern("yyyy년 MM월 dd일 HH시 mm분 ss초")
val patterned: String = currentTime.format(pattern)
val parse = LocalDate.parse(patterned, pattern)
// patterned = 2022년 11월 09일 21시 59분 54초
// parse = 2022-11-09
여기까지 저의 긴 글을 읽어주셔서 감사합니다.
제가 습관적으로 코딩을 하는 그날까지 습관적으로 코딩을 하기 위해 글 작성을 꾸준하게 하겠습니다.
'Android > Kotlin' 카테고리의 다른 글
Kotlin String 문자열 활용하기 - 대소문자 변환, format, 공백제거 (%d, \n, trim ...) (2) | 2023.01.28 |
---|---|
[Android] Kotlin for문, Kotlin forEach문 (0) | 2022.08.06 |
[Android] Kotlin Extension 나만의 함수 만들기 (0) | 2022.07.21 |
[Android] Kotlin String 문자열 찾기, 문자열 변경 치환 (indexOf, replace) (0) | 2022.07.18 |
[Android] Kotlin String 문자열 자르기, 문자열 분할 (substring, split, chunked). (1) | 2022.07.16 |
최근댓글