valutilDate=Date()println(utilDate.toString())// 출력
WedApr0706:48:15UTC2021
다음은 이 객체의 표현패턴을 바꿔보겠습니다.
1
2
3
4
5
6
valutilDate=Date()valformatType=SimpleDateFormat("yyyy-MM-dd HH:mm:ss")println(formatType.format(utilDate))// 출력
2021-04-0706:49:17
java.time
그런데 이 java.util.Date라는 라이브러리는 API level 1 부터 추가된 오래된 라이브러리라 여러 문제도 많고 해서 시간관련 문제를 많이 개선한 java.time 라이브러리를 사용하는 것을 권해드립니다.
날짜객체를 만든 뒤 포매터로 표시형식을 조정하는 것은 동일합니다.
1
2
3
4
5
6
7
valdate=LocalDateTime.now()valdtf=DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")valnowString=date.format(dtf)println(nowString)// 출력
2021-04-0706:57:21
Joda-Time
그런데 문제는 java.time이 API level 26에서 새로 추가된 라이브러리이기 때문에 오레오 미만의 기기에서는 시간을 대응하는 코드를 추가로 준비해야 한다는 점입니다.
이런 경우에 사용할 수 있는 Joda-Time이라는 라이브러리가 있습니다. Joda-Time은 현재 active하게 개발되진 않지만 API level 26 미만에서 정확한 시간을 사용하기에 적절한 라이브러리입니다.
java.time과 공유하여 사용하기 위해서는 다음과 같이 안드로이드 버전을 확인하고 버전에 맞는 라이브러리로 timeDate 객체를 만들어주면 됩니다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
// gradle에 추가
implementation'joda-time:joda-time:2.10.10'valtimeDate:Stringif(Build.VERSION.SDK_INT>=Build.VERSION_CODES.O){valdate=LocalDateTime.now()valdtf=DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")valnowString=date.format(dtf)timeDate=nowString}else{valdate=org.joda.time.LocalDateTime.now()valdtf=DateTimeFormat.forPattern("yyyy-MM-dd'T'HH:mm:ss")valjodatime=dtf.parseDateTime(date.toString())valnowString=dtf.print(jodatime)timeDate=nowString}