시간 표시
지구는 23시간 56분 4.091초 주기로 자전
지구는 태양을 365.2564 태양일 주기로 공전
UTC(협정 세계시; 프랑스어: Temps Universel Coordonné, 영어: Coordinated Universal Time)
: 국제원자시와 윤초 보정을 기반으로 표준화된 국제 표준시
GMT(그리니치 평균시; Greenwich Mean Time)
: 런던을 기점, 웰링턴을 종점으로 하는 협정 세계시의 빠른 시간
UTC는 세슘 원자의 진동 수를 기반으로 계산한다.
GMT는 지구 자전을 이용해 측정하고 지구의 자전이 늦어져 덜 정확하다.
TimeZone(시간대)
: 영국의 그리니치 천문대를 기준으로 지역에 따른 시간의 차이, 다시 말해 지구의 자전에 따른 지역 사이에 생기는 낮과 밤의 차이를 인위적으로 조정하기 위해 고안된 시간의 구분선을 일컫는다.
DST(Daylight saving time; 서머타임 summer time)
: 하절기에 표준시를 원래 시간보다 한 시간 앞 당긴 시간을 쓰는 것
실제 낮 시간과 사람들이 활동하는 낮 시간 사이의 격차를 줄이기 위해 사용한다.
ex) 09:00~18:00(DST 적용 시간) -> 08:00~17:00(실제 시간)
KOTLIN 코드, JAVA 라이브러리
val FORMAT_DATE = "yyyy-MM-dd HH:mm:ss"
val FORMAT_UTC = "yyyy-MM-dd'T'HH:mm:ssXXX"
private fun getLocalTime(
locale: Locale = Locale.getDefault(),
timeZone: TimeZone = TimeZone.getDefault()
): String {
val date = Date()
val simpleDateFormat = SimpleDateFormat(FORMAT_DATE, locale).apply {
this.timeZone = timeZone
}
return simpleDateFormat.format(date)
}
private fun getUTCTime(
locale: Locale = Locale.getDefault(),
timeZone: TimeZone = TimeZone.getTimeZone("UTC")
): String {
val date = Date()
val simpleDateFormat = SimpleDateFormat(FORMAT_UTC, locale).apply {
this.timeZone = timeZone
}
return simpleDateFormat.format(date)
}
println(getLocalTime())
println(getUTCTime())
println(getLocalTime(timeZone = TimeZone.getTimeZone("America/New_York")))
println(getUTCTime(timeZone = TimeZone.getTimeZone("America/New_York")))
결과 :
2020-01-05 16:08:58
2020-01-05T07:08:58Z
2020-01-05 02:08:58
2020-01-05T02:08:58-05:00
DST가 자동 적용되는지 확인 필요