위도와 경도
- 위도(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)
- 그리니치 평균시/표준시(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+13
, GMT+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
: 영어, 캐나다
- 한국어로, 한국에서, UTF-8 인코딩을 사용하는 경우
종류
- POSIX Locale
- POSIX(Portable Operating System Interface)
- 이식 가능 운영체제 인터페이스
- 서로 다른 UNIX OS의 공통 API를 정리하여 이식성 높은 유닉스 응용 프로그램을 개발하기 위한 목적으로 IEEE가 책정한 애플리케이션 인터페이스 규격
- POSIX 시스템의 기본 locale로, 미리 정의된 형식으로 날짜를 출력한다.
en_US_POSIX
- POSIX 규격에서 정의한 locale 설정을 사용한다.
- 개발할 때 사용자의 국가에 관계 없이 동일한 date format을 사용하려면 이 locale을 사용해야 한다.
- POSIX(Portable Operating System Interface)
- C Locale
- C 언어에서 정의하는 locale
- POSIX 계열 운영체제에서는 C와 POSIX locale 혼용