위도와 경도

  • 위도(latitude) : 적도를 기준으로 북쪽 또는 남쪽으로 떨어진 위치 (도(°) 단위)
  • 경도(longitude) : 본초 자오선을 기준으로 동쪽 또는 서쪽으로 떨어진 위치 (도(°) 단위)
    • 180°E ~ 180°W (동경 180° ~ 서경 180°) 까지의 범위 안에 위치
    • 경도 15°로 1시간의 시차가 생긴다.

자오선

  • 자오선(Meridian) 또는 경선
    • 북극점과 남극점을 최단 거리로 연결하는 세로선
    • 동경(E, X E, X East) : 자오선의 동쪽
    • 서경(W, Y W, Y West) : 자오선의 서쪽
    • 동경과 서경은 180°까지 있고, 동서경 180°는 일치한다.
  • 본초 자오선(prime meridian)
    • 영국 그리니치 천문대를 지나는 자오선 (경도 0°)
    • 정오 (낮 12시)의 기준이 된다.

날짜 변경선 (International Date Line)

  • 경도 180°를 기준으로 날짜를 구분하는 선
  • 그리니치 천문대를 기준으로 180°W ~ 180°E 끝에서 날짜가 바뀌도록 기준으로 만든 것

시간대 (Timezone)

  • 본초 자오선을 기준으로 지역에 따른 시간 차이를 조정하기 위해 만든 구분선 또는 범위
  • 지역 별 경도값에 따라 기준시(GMT)로부터 시간 차이를 계산해서 각 지역마다 시간을 보정한다.
  • 표기법
    • GMT 기준 : GMT (+/-) 시차
    • UTC 기준 : UTC (+/-) 시차
  • 참고

GMT(Greenwich Mean Time)

UTC(Universal Time Coordinated)

  • 협정 세계시(UTC)
  • 1972년 1월 1일부터 시행된 국제 표준시
  • 영어로 ‘Coordinated Universal Time’, 프랑스어로 ‘Temps Universel Coordonné‘이지만 영국과 프랑스의 분쟁으로 인해 두 나라의 표기법과 겹치지 않는 “UTC"로 표기
  • 1970년 1월 1일 자정을 기준으로 0ms부터 시간을 계산한다.
  • GMT에 국제 원자시와 윤초 보정을 한 것
  • GMT와 초의 소수점 단위에서만 차이가 나므로, 일반적으로 UTC와 GMT를 혼용한다.

Etc/GMT

  • POSIX 시스템의 시간대 표기법 중 하나
  • GMT/UTC와 동일한 시간대를 가리키지만, 표기법에 차이가 있다.
  • Etc/GMT+1은 GMT보다 1시간 앞서 가는 시간대를 나타낸다.
  • 1시간 앞서가므로, Etc/GMT+1은 GMT-1 또는 UTC-1과 같다.

DST(Daylight Saving Time)

  • 일광 절약 시간제(Daylight Saving Time) 또는 Summer Time
  • 하절기에 표준시를 원래 시간보다 한 시간 앞당겨서 사용하는 것
  • 2시부터 summer time을 적용하면, 시간을 3시로 조정
  • 캘리포니아의 경우, GMT-8 시간대에 속하지만 summer time을 적용하면 GMT-7이 된다.

❓ GMT+16은 없는 이유

미국 캘리포니아는 GMT-8 시간대에 속하고, summer time을 적용하면 GMT-7 시간대에 속한다. 이것은 캘리포니아가 그리니치 천문대를 기준으로 서쪽에 있다고 보기 때문인데, 그리니치 천문대의 동쪽으로 쭉 가다 보면 캘리포니아를 만날 것이므로 GMT+16이라고 표기할 수 있는지 궁금하다.

우선, 시간대는 GMT-11 ~ GMT+14 까지밖에 정의되어 있지 않으므로 GMT+16이라고 쓸 수는 없다. 그럼 왜 GMT+14 까지 밖에 없는가?

180°W, 180°E 는 각각 날짜 변경선의 기준이 된다. 즉, 시간대가 변경되는 범위는 이 날짜 변경선 안에서 정해진다. GMT+16은 날짜 변경선(180°E)을 넘어서는 시간대이므로 하루를 표현하는 시간대 안에서 존재할 수 없다.

GMT+13GMT+14 등의 시간대는 날짜 변경선(180°E) 을 조금 넘어서 있는데, 날짜 변경선에 걸쳐있는 국가들 중 일부는 날짜를 사용하는 방식에 따라 자체적으로 시간을 보정하기 때문에 이것을 반영한 것이다. 예를 들어, 어떤 나라에서 12월 30일을 없애기로 했다면 그에 맞게 날짜 변경선이 달라질 수 있고, 그 국가를 지나지 않는 선을 만들면서 부분적으로 날짜 변경선을 넘어서는 시간대가 정의될 수 있다.

Locale

  • 사용자의 언어, 지역 설정, 출력 형식 등을 정의한 문자열
  • POSIX 기반 시스템에서는 같은 형식을 공유한다. (Unix, Linux, macOS 등)
  • Locale 형식을 변경하여 출력 및 동작 방식을 변경할 수 있다.

형식

[language]_[territory].[codeset][@modifier]
  • language : 언어 (ISO 639-1 표준 형식을 따름)
  • territory : 국가 또는 지역 (ISO 3166-1 표준 형식을 따름)
  • codeset : 인코딩 codeset (e.g. UTF-8)
  • Example
    • 한국어로, 한국에서, UTF-8 인코딩을 사용하는 경우
      • ko_KR.UTF-8
    • 언어와 국가는 개별적으로 설정할 수 있다.
      • en_US.UTF-8 : 영어, 미국
      • en_CA.UTF-8 : 영어, 캐나다

종류

  1. POSIX Locale
    • POSIX(Portable Operating System Interface)
      • 이식 가능 운영체제 인터페이스
      • 서로 다른 UNIX OS의 공통 API를 정리하여 이식성 높은 유닉스 응용 프로그램을 개발하기 위한 목적으로 IEEE가 책정한 애플리케이션 인터페이스 규격
    • POSIX 시스템의 기본 locale로, 미리 정의된 형식으로 날짜를 출력한다.
    • en_US_POSIX
      • POSIX 규격에서 정의한 locale 설정을 사용한다.
      • 개발할 때 사용자의 국가에 관계 없이 동일한 date format을 사용하려면 이 locale을 사용해야 한다.
  2. C Locale
    • C 언어에서 정의하는 locale
    • POSIX 계열 운영체제에서는 C와 POSIX locale 혼용

참고