이번에는 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

 

 


여기까지 저의 긴 글을 읽어주셔서 감사합니다.

제가 습관적으로 코딩을 하는 그날까지 습관적으로 코딩을 하기 위해 글 작성을 꾸준하게 하겠습니다.

  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기