개발새발 - IT 기술블로그
article thumbnail

안녕하세요. 이번 포스팅에서는 날짜 객체인 LocalDataTime과 TimeStamp 객체인 Long을 서로 파싱하는 방법에 대해 알아보겠습니다.

 

 

 


 

 

개요

 

보통 안드로이드에서 System.currentTimeMillis(),  Date 객체의 매개변수, Calendar 객체의 timeInMillis() 등 자주 사용하는 데이터 타입들은  Long 타입으로 제공됩니다.

 

 

 

하지만 Long은 타임스탬프이기 때문에 실제 날짜나 시간 데이터와는 형태가 다릅니다.

따라서 우리가 사용하기 좋은 구조로 데이터를 파싱하는 과정이 필요한데, 이때 자주 사용되는 객체가 LocalDateTime입니다.

 

 

 

LocalDateTime은 시간을 년,월,일,시,분,초 등으로 쪼개어 받아올 수 있고, 세계시간을 기준으로 해당하는 지역의 시간으로 변환 할 수도 있습니다. 또한, 시간 매개변수로 생성 된 LocalDateTime에서 plus() 혹은 minus() 메서드를 사용해 시간이나 날짜를 쉽게 빼고 더할수도 있습니다.

 

 

 

그러면 Long 타입과 LocalDateTime 타입과의 파싱하는 스니펫을 보여드리고 글을 마치겠습니다.

 

 

 

포스팅 하단에 LocalDateTime 객체에 대한 Document를 링크하였으니, 좀 더 다양한 기능들을 공부하고 싶으신 분들은 확인해보시면 되겠습니다.

 

 

 

LocalDateTime  →  Long

/** LocalDateTime을 Long으로 파싱 **/
fun parseLocalDateTimeToLong(localDateTime: LocalDateTime): Long {
    return localDateTime.atZone(ZoneId.systemDefault()).toInstant().toEpochMilli()
    // systemDefault는 현재 디바이스의 지역을 의미함
}

 

 

 

Long → LocalDateTime

/** Long을 LocalDateTime으로 파싱 **/
fun parseLongToLocalDateTime(long: Long): LocalDateTime {
    return LocalDateTime.ofInstant(Instant.ofEpochMilli(long),
    ZoneId.systemDefault()) // systemDefault는 현재 디바이스의 지역을 의미함
}

 

 

 

감사합니다.

 

 

 

 

 

참고

https://developer.android.com/reference/java/time/LocalDateTime

 

LocalDateTime  |  Android Developers

 

developer.android.com