THIS IS ELLIE

timezone 활용하기 본문

낑낑/Troubleshooting

timezone 활용하기

Ellie Kim 2019. 8. 7. 22:36

WeatherAPI를 사용하는데 JSON에 timezone이 주어졌다.

나는 timezone을 가지고 현지 시간을 알아야 하는데 어떻게 해야 할지 감이 안잡혔다.

timezone이 애초에 뭔지 모름.



그렇게 해서 찾게 된 timezone의 개념.

 

timezone(시간대)은 영국의 그리니치 천문대를 기준으로 지역에 따른 시간의 차이이다.

지구의 자전에 따른 지역 사이에 생기는 낮과 밤의 차이를 인위적으로 조정하기 위해 고안된 시간의 구분선을 일컫는다.

시간대는 UTC를 기준으로한 상대적인 차이로 나타낸다.

 

아 그럼 나는 해당 지역의 시간 차이를 가지고 해당 지역의 시간대를 알수 있는거구나.

그럼 시간대 차이는 어떻게 되는거지 🤷‍♀️

 

아래가 세계 시간대 차이를 나타낸 이미지다.

왼쪽 세계지도 아래에 나오는 + - 숫자는 시간차를 뜻한다.

오른쪽도 마찬가지

ex) GMT + 1 은 +1 한 시간 빠르다는 의미

 

아까는 UCT라며 GMT는 또 왜나와?

GMT랑 UTC랑은 비슷한거라 생각하면 된다. 

 

그리니치 평균시(GMT)는 런던을 기점, 웰링턴을 종점으로 하는 협정 세계시의 빠른 시간이고

1972년 1월 1일부터 UTC를 공식 표현으로 쓰지만 아직도 GMT란 표현은 널리 쓰이고 있다.

 

협정 세계시(UTC)는 1972년 1월 1일부터 시행된 국제 표준시이다.

UTC는 국제 원자시와 윤초 보정을 기반으로 표준화되었다.

 

UTC는 그리니치 평균시(GMT)로 불리기도 하며 UTC와 GMT는 초의 소수점 단위에서만 차이가 나기 때문에 일상에서는 혼용되어 사용되며 기술적인 표기에서는 UTC가 사용된다.

 

혼용되며 사용되니까 나는 GMT가 익숙하니까 GMT라 해야지.

 

나는 timezone을 받고 특정 도시의 날을 알아내야한다.

그럼 timezone을 계산하는 메서드를 생성해야겠네.

 

GMT 0 에서부터 해당 도시는 얼마나 차이나냐를 알면되니까 그걸 구하는 메서드 부터 생성하자. 

예를 들어 timezone으로 -25200이 들어왔다 치면

/ 3600으로 나눠준다. (1시간은 = 3600초이니) 

그럼 -7이 되는데 이는 표준시간보다 7시간이 느리다는 의미다.

 

여기까지 하면 얼마나 차이 나는 것을 확인할 수 있게 된다.

TimeZone구조체의 abbreviation메서드로 "GMT-07"을 보내주면

표준시간에서 7시간 느린 시간을 알 수 있게 된다.

 

편리하게 스위프트에서는 TimeZone구조체를 제공하고

abbreviation메서드를 활용하면 현지 로컬 시간대를 확인할 수 있다.

반응형