YourWorldTime

EST가 모호한 이유, 그리고 대신 쓸 것

· 약 4분

시간대 약어는 관장하는 기구도 없고 유일성 보장도 없는 비공식 이름표입니다. IST는 인도이자 아일랜드이자 이스라엘이고, CST는 아메리카이자 중국이자 쿠바입니다. 대신 IANA 식별자를 쓰세요.

캘린더 초대장에 “14:00 IST”라고 적혀 있습니다. 누가 보냈느냐에 따라 그것은 08:30 UTC이기도 하고, 13:00 UTC이기도 하고, 12:00 UTC이기도 합니다. 그 문자열 어디에도 어느 쪽인지 알려 주는 것이 없고, 세 가지 읽기 모두 올바른 용법입니다.

시간대 약어는 비공식입니다. 어떤 표준화 기구도 이를 배정하지 않고, 유일성을 보장하지도 않으며, 몇몇은 지금도 다투어집니다. 맥락을 공유하는 사람들 사이의 대화에서는 괜찮지만, 그 밖의 어디에서도 안전하지 않습니다.

중요한 충돌들

IST — 세 가지 뜻이 모두 현재 쓰입니다.

시차 시간대
Indian Standard Time UTC+05:30 Asia/Kolkata
Irish Standard Time UTC+01:00 Europe/Dublin (여름에만)
Israel Standard Time UTC+02:00 Asia/Jerusalem

인도와 아일랜드는 네 시간 반 떨어져 있습니다. 잘못된 IST로 잡은 회의는 조금 이른 정도가 아니라 근무일의 대부분만큼 어긋납니다.

CST — 네 가지 뜻입니다.

시차 시간대
Central Standard Time (북아메리카) UTC-06:00 America/Chicago
China Standard Time UTC+08:00 Asia/Shanghai
Cuba Standard Time UTC-05:00 America/Havana
Central Standard Time (오스트레일리아) UTC+09:30 Australia/Adelaide

시카고와 상하이는 열네 시간 떨어져 있습니다.

PST — UTC-08:00의 Pacific Standard Time과 UTC+08:00의 Philippine Standard Time. 정확히 열여섯 시간 차이이니, 착오는 아예 다른 날짜에 떨어집니다.

BST — UTC+01:00의 British Summer Time과 UTC+06:00의 Bangladesh Standard Time.

EST — 북아메리카에서 UTC-05:00의 Eastern Standard Time, 그리고 역사적으로는 AEST가 자리 잡기 전 오스트레일리아가 동부 주들에 대해 UTC+10:00으로 쓰던 약어이기도 합니다. 오래된 오스트레일리아 문서는 지금도 접두어 없는 형태를 씁니다.

또 하나의 문제, 약어는 계절을 가리킨다

약어가 유일한 경우조차 그것이 가리키는 것은 한 해의 절반뿐입니다.

America/New_York은 11월부터 3월까지 EST이고 3월부터 11월까지 EDT입니다. 그러니 7월의 “EST”는 존재하는 어떤 시계도 가리키지 않습니다. 그때 그 시간대는 EDT이니까요. 그래도 사람들은 “뉴욕 시각”이라는 뜻으로 그렇게 씁니다. 그것을 곧이곧대로 받아들인 시스템은 일곱 달 동안 한 시간을 틀리게 계산합니다.

“EST”가 인터넷에서 가장 잘못 쓰이는 약어인 이유가 이것입니다. 어떤 장소의 이름처럼 쓰이지만, 실은 그 장소의 한 계절 이름입니다.

대부분의 시간대에는 약어가 아예 없다

영어권 시간대에는 대체로 글자 약어가 있습니다. 대부분의 시간대에는 없습니다.

도쿄와 상하이, 상파울루는 어떤 영어 로케일이 쓰는 ICU 데이터에도 글자 약어가 없어 “GMT+9”, “GMT+8”, “GMT-3”으로 보고됩니다. 일본에 대해 “JST”라고 쓰인 것을 보게 되고 통하기도 하지만, 그것은 관행이지 데이터가 아닙니다.

여기서 시간대 도구를 만드는 사람에게 뻔한 유혹이 생깁니다. 빈칸을 메우는 것입니다. 그럴듯해 보이니 “JST”를 지어내고, 브라질에는 “BRT”, 카트만두에는 무언가를. 이 사이트는 일부러 그러지 않습니다. 어떤 로케일도 글자를 갖고 있지 않은 곳에서는 대신 시차를 보여 줍니다. 이 사이트가 내건 유일한 약속은 데이터가 짐작이 아니라 IANA 데이터베이스에서 온다는 것이고, 지어낸 약어야말로 참고 자료를 믿을 수 없게 만드는 그럴듯한 거짓의 전형이기 때문입니다.

대신 무엇을 쓸 것인가

IANA 식별자. America/New_York, Asia/Kolkata, Europe/Dublin. 유일하고 안정적이며, 계절이 아니라 규칙의 내력을 지닌 장소를 가리킵니다.

규칙 변경에도 살아남습니다. 2016년 튀르키예가 서머타임을 폐지했을 때 Europe/Istanbul은 계속 튀르키예를 뜻했습니다. “EET”나 “EEST”에 매여 있던 코드는 전부 고쳐야 했습니다.

사람에게 쓸 때는 도시와 시차를 적으세요. “뭄바이 14:00 (UTC+05:30)”. 어디에 있는 독자든 당신이 어느 IST를 뜻했는지 몰라도 움직일 수 있습니다.

캘린더 초대에서는 시간대를 캘린더가 붙이게 두세요. 현대의 캘린더는 모두 일정과 함께 시간대 식별자를 저장하고 참석자마다 변환해 줍니다. 제목에 약어를 타이핑하는 일은 바로 그것을 무너뜨립니다.

API와 데이터에서는 명시적 시차나 Z를 붙인 ISO 8601을 쓰고, _어느 시차인지_가 아니라 _어디인지_를 알아야 할 때는 식별자를 따로 실어 나르세요.

그래도 읽어 내야 할 때

약어를 이미 받았고 물어볼 수 없다면 맥락을 쓰세요.

  • 누가 보냈나요? 인도 회사라면 인도, 아일랜드 회사라면 아일랜드입니다.
  • 어느 시차라야 제안된 시각이 그쪽에 말이 되나요? 아무도 03:00에 통화를 잡지 않습니다.
  • 대화에 도시가 나오나요? 도시 하나면 완전히 해결됩니다.

그리고 중요한 자리라면 — 고객과의 통화, 마감, 배포 창구 — 물어보세요. “인도인가요, 아일랜드인가요?”의 10초가 그 반대보다 쌉니다. 그리고 질문을 받는 사람도 아마 같은 것을 궁금해했을 겁니다.

안전한 약어들

모든 약어가 다투어지는 것은 아닙니다. 몇몇은 실무에서 유일하고 산문에서는 그런대로 안전합니다. 그래도 코드에서는 아닙니다.

  • UTC — 정의상 뜻이 하나
  • CEST — Central European Summer Time, 유일
  • AEDT / AEST — Australian Eastern, A 접두어를 채택한 뒤로 모호하지 않음
  • NZDT / NZST — 뉴질랜드
  • JST — 일본. 데이터가 아니라 관행에 따른 것이며, ICU는 어떤 영어 로케일에도 이를 담지 않음

규칙이 보입니다. 안전한 것들은 나라나 대륙 접두어를 단 것들입니다. “Eastern Standard Time”은 충돌할 수밖에 없었습니다. 동쪽을 가진 대륙이 하나가 아니니까요.

IANA 데이터베이스는 약어를 어떻게 다루는가

데이터베이스는 시간대의 시기마다 한 칸을 두어 약어를 기록하기는 하지만, 그것을 비공식으로 취급합니다. 자체 문서가 밝히기를, 약어는 유일하지도 표준화되지도 않았으며, 지역 약어가 없던 곳에서는 데이터베이스 관리자들이 지어낸 경우도 있다고 합니다.

몇몇은 지어낸 것이라는 이유로 시간이 흐르며 삭제됐습니다. 한때 창작된 세 글자 코드를 달고 있던 시간대들은 이제 +0545 같은 숫자 형태를 보고합니다. 지어낸 약어가 정직한 시차보다 못하기 때문입니다.

그 편집상의 판단 — 그럴듯한 창작이 부재를 인정하는 것보다 나쁘다는 판단 — 은 이 사이트가 쓰는 것과 같습니다. 도쿄 페이지의 약어 칸이 JST가 아니라 UTC+9로 읽히는 이유입니다.