date 관련 정리

2019-10-24

UTC

UTC는 Coordinated Universal Time의 줄임말로 국제 표준시간이다.

GMT

GMT는 Greenwich Mean Time의 줄임말로 런던을 기점으로하고 웰링턴에서 종점으로 설정 되는 협정 세계시간이다.

UTC vs GMT

UTC와 GMT는 일상에서는 공통으로 같은 시간이다.
UTC가 좀더 정확한 시간이라고 한다.

ISO 8601

UTC 그리고 Timezone과 함께 문자열의 형태로 시간을 표현하는 방법을 기술해놓은 표준이다.
YYYY-MM-DDTHH:mm:ss.sssZ

KST

KST(Korea Standard Time)는 UTC에 9시간을 더한 시간이다.

얼마전 쿠키값 세팅되는 시간을 23:59:59으로 지정해놓았는데 분명 콘솔창에는 23:59:59로 찍히지만 저장된 만료
시간을 보면 14:59:59 로 저장이 되었다.
그래서 23:59:59로 바꾸기 위해 열심히 서치를 하다가 찾아낸 정보는
JavaScript Cookie expires time must be GMT/UTC 였다.
쿠키 만료시간을 세팅할 때 자바스크립트가 로컬에서 지정한 시간(KST)을 UTC로 바꾼다는 이야기였다.
그래서 아예 UTC로 바꾼 시간을 넘기면 되겠다는 생각으로 아래와 같이 코드를 수정했다.

1
2
3
4
5
6
7
8
9
10
// 기존코드
const date = new Date();
const expires = new Date(date.getFullYear(), date.getMonth(), date.getDate(), 235959);
$.cookie(cookieName, specialPricePopup.chgTimestamp, { expires });

// UTC로 변환한 코드
const date = new Date();
const expires = new Date(Date.UTC(date.getFullYear(), date.getMonth(), date.getDate(), 235959));
$.cookie(cookieName, specialPricePopup.chgTimestamp, { expires });
`

그러나, 위의 코드는 잘못되었다. UTC로 날짜를 생성하고 다시 로컬기준으로 시간으로 바꾸는 것이다.
그래서 쿠키 만료시간에 23:59:59가 세팅은 되지만.. 결국은 잘못된 코드다.
알고보니 쿠키값 세팅은 UTC 기준으로 되고 브라우저?자바스크립트?의 시간도 UTC 기준으로 돌아가기 때문에 기존 코드대로 해야 쿠키값이 해당 시간에
만료가 되는 것이었다.