Common

시간 표시

날아갔나요 2019. 6. 16. 17:39

 

지구는 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가 자동 적용되는지 확인 필요