이번 포스팅에서는 날짜와 시간을 다루는 법에 대해 알아보도록 하겠습니다.
안드로이드의 날짜 라이브러리
날짜를 다루기 위해서는 일반적으로 날짜객체를 만들고 그 날짜객체를 자기가 필요로 하는 양식에 맞춰서 표현하도록 하면 되는데요, 이때 사용할 수 있는 날짜 패턴은 다음 표와 같이 여러가지가 있습니다.
Date and Time Pattern | Result |
---|---|
“yyyy.MM.dd G ‘at’ HH:mm:ss z” | 2001.07.04 AD at 12:08:56 PDT |
“EEE, MMM d, ‘‘yy” | Wed, Jul 4, ‘01 |
“h:mm a” | 12:08 PM |
“hh ‘o’‘clock’ a, zzzz” | 12 o’clock PM, Pacific Daylight Time |
“K:mm a, z” | 0:08 PM, PDT |
“yyyyy.MMMM.dd GGG hh:mm aaa” | 02001.July.04 AD 12:08 PM |
“EEE, d MMM yyyy HH:mm:ss Z” | Wed, 4 Jul 2001 12:08:56 -0700 |
“yyMMddHHmmssZ” | 010704120856-0700 |
“yyyy-MM-dd’T’HH:mm:ss.SSSZ” | 2001-07-04T12:08:56.235-0700 |
“yyyy-MM-dd’T’HH:mm:ss.SSSXXX” | 2001-07-04T12:08:56.235-07:00 |
“YYYY-‘W’ww-u” | 2001-W27-3 |
코드 작성
java.util.Date
그럼 우선은 java.util.Date 라이브러리를 이용해서 날짜객체를 만들어 보겠습니다.
|
|
다음은 이 객체의 표현패턴을 바꿔보겠습니다.
|
|
java.time
그런데 이 java.util.Date라는 라이브러리는 API level 1 부터 추가된 오래된 라이브러리라 여러 문제도 많고 해서 시간관련 문제를 많이 개선한 java.time 라이브러리를 사용하는 것을 권해드립니다.
날짜객체를 만든 뒤 포매터로 표시형식을 조정하는 것은 동일합니다.
|
|
Joda-Time
그런데 문제는 java.time이 API level 26에서 새로 추가된 라이브러리이기 때문에 오레오 미만의 기기에서는 시간을 대응하는 코드를 추가로 준비해야 한다는 점입니다.
이런 경우에 사용할 수 있는 Joda-Time이라는 라이브러리가 있습니다. Joda-Time은 현재 active하게 개발되진 않지만 API level 26 미만에서 정확한 시간을 사용하기에 적절한 라이브러리입니다.
java.time과 공유하여 사용하기 위해서는 다음과 같이 안드로이드 버전을 확인하고 버전에 맞는 라이브러리로 timeDate 객체를 만들어주면 됩니다.
|
|
두 날짜 사이의 차이 계산하기
그러면 다음은 2000년 1월 1일부터 오늘까지 경과한 날수를 계산해보겠습니다.
|
|
이렇게 해서 날짜와 시간을 다루는 법에 대해 알아보았습니다.