UTC와 ISO 8601, Javascript Date 객체
UTC와 GMT
협정 세계시(UTC)
- 1972년 1월 1일부터 시행된 국제 표준시. 즉 전 세계 시간의 기준!!
- 그레고리력의 표기를 따른다. (그레고리력은 one of 역법체계)
그리니치 평균시(GMT)
- 협정 세계시의 기준시간대에 속함
- UTC + 0h에 해당하는 시간대(Time Zone)라는 말
- 참고로 대한민국은 UTC + 9h의 시간대에 속한다.
- 따라서 일상에서는 GMT와 UTC를 혼용하는 경우가 많다.
- 기술적인 표기는 UTC로 한다.
ISO 8601
- ISO 8601은 날짜와 시간의 표기에 관한 국제 표준 규격이다.
- 최신 버전인 ISO 8601:2004와 구버전인 ISO 8601:2000, ISO 8601:1988 이 있다.
날짜 표기
- 연월일 (year, month, day)
- YYYY-MM-DD (확장 형식) 또는 YYYYMMDD (기본 형식)으로 표기한다.
- 예) 1981-02-22 또는 19810222 : 1981년 2월 22일
- YYYY-MM-DD (확장 형식) 또는 YYYYMMDD (기본 형식)으로 표기한다.
-
연과 연중 일수
- YYYY-DDD (확장 형식) 또는 YYYYDDD (기본 형식)으로 표기한다.
- DDD는 연중 날의 번호로 1월 1일이 001이며, 12월 31일은 평년은 365, 윤년은 366이 된다.
- 예) 1981-053 또는 1981053 : 1981년의 53번 째 날
-
연과 주와 주중 일수
- YYYY-Www-D (확장 형식) 또는 YYYYWwwD (기본 형식)으로 표기한다.
- ww는 연중 주의 번호로, 해의 첫 주는 01, 마지막 주는 52 또는 53이 된다.
- 단, 해의 첫 주는 그 해의 첫번째 목요일을 포함한 주로 한다.
- D는 요일을 나타내며, 월요일이 1, 일요일이 7이다.
- 예) 1981-W07-7 또는 1981W077 : 1981년의 7번째 주의 일요일
시간 표기
- 쌍점을 쓴 hh:mm:ss (확장 형식) 또는 hhmmss (기본 형식)을 사용한다.
- hh는 시를 나타내며 00부터 24까지의 값을 갖는다.
- mm은 분을 나타내며 00부터 59까지의 값을 갖는다.
- ss는 초를 나타내며 00부터 59까지의 값을 갖는다.
- 날짜와 시간을 함께 표기할 때에는, 날짜와 시간 사이에 T를 넣어 표기한다.
- 예) 1981-02-22T09:00:00 : 1981년 2월 22일 09:00
시간대 표기
- 시간대를 표기할 때에는 Z 또는 +/- 기호를 사용한다.
- UTC + 0h 시간대(이하 UTC 시간대)에서는 시각 뒤에 Z를 붙인다.
- 예) 1981-02-22T09:00Z 또는 19810222T0900Z : UTC 시간대에서의 1981년 2월 22일 오전 9시
- 이외 시간대에서는 시각 뒤에 +- hh:mm, +- hhmm, +- hh 를 덧붙여 쓴다.
- 예) 1981-02-22T09:00:00+09:00 : UTC + 9h 시간대에서의 1981년 2월 22일 오전 9시
- +가 붙으면, UTC의 시각보다 더 "빠르다"는 의미다.
- -가 붙으면, UTC의 시각보다 더 "느리다"는 의미다.
- 예) 1981-02-22T09:00+09:00 는 1981-02-22T00:00Z 와 동일하다.
즉, UTC + 9h 시간대에서는 오전 9시이지만, UTC 시간대에서는 오전 0시이다.
- 예) 1981-02-22T09:00+09:00 는 1981-02-22T00:00Z 와 동일하다.
기간의 표기
- 기간을 나타낼 때에는 시작일시/종료일시로 표기한다.
- 1981-02-22/2007-09-26
- 1981-02-22T09:00:00+09:00/2007-09-26T17:00:00+09:00
헷갈리는 Javascript Date 객체 메소드들..
getTimezoneOffset()
- UTC 기준 시간대와 로컬 시간대의 차이(분)를 구하는 메소드
- 로컬 시간대가 기준 시간대보다 뒤에 있으면 반환값이 양수이고 앞에 있으면 음수다.
- 우리나라는 기준 시간대보다 앞에 있다 (+9)
- 따라서 0-9 = -9
- (분으로 환산) -9 * 60 = -540
- 역으로 계산하면 이걸로 기준시간대와 몇시간 차이인지 구할 수 있음!
const x = new Date();
const currentTimeZoneOffsetInHours = -x.getTimezoneOffset() / 60;
console.log(currentTimeZoneOffsetInHours) // 9
getTime()
- 1970 년 1 월 1 일 00:00:00 UTC와 주어진 날짜 사이의 경과 시간(밀리 초)을 구하는 메소드
- 기능적으로 valueOf() 메소드와 동일
- 두 시간 사이의 차이를 구할 때 사용할 수 있다
const a = new Date('2021-12-30 12:00:00');
const b = new Date('2021-12-30 12:10:00');
const mscDiff = b.getTime() - a.getTime();
const secDiff = mscDiff / 1000;
const minDiff = secDiff / 60;
console.log(mscDiff) // 밀리초 차이 : 600000
console.log(secDiff) // 초 차이 : 600
console.log(minDiff) // 분 차이 : 10
Author And Source
이 문제에 관하여(UTC와 ISO 8601, Javascript Date 객체), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@rongsic/UTC와-ISO-8601와-Date-객체저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)