이번에는 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 변수 값입니다.
SimpleDateFormat (Java Platform SE 7 )
Parses text from a string to produce a Date. The method attempts to parse text starting at the index given by pos. If parsing succeeds, then the index of pos is updated to the index after the last character used (parsing does not necessarily use all charac
docs.oracle.com
위의 예제에서 보시면
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
[Android] Kotlin Extension 나만의 함수 만들기
개발자들은 항상 조금 더 간편한 소스, 조금 더 간단한 소스를 고민합니다. 자주 사용되는 소스를 본인이 사용하기 편하게 미리 단축어로 저장해두는건 어떨까요? (한번 상상을 해봅시다.) via GIP
salmonpack.tistory.com
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 |
최근댓글