RATSENO

[JS]Date 객체 만들기 본문

DEV/JS

[JS]Date 객체 만들기

RATSENO 2019. 11. 12. 10:53

Date 객체는 네 가지 방법으로 만들 수 있습니다. 

//아래 결과는 해당 지역의 표준시(UTC+tzOffset)에 따라 다를 수 있습니다.
//즉 사용자의 위치가 한국일 경우 UTC +9시간 된 결과가 나옵니다.
new Date();
//Tue Nov 12 2019 10:43:55 GMT+0900 (한국 표준시)

//자바스크립트의 월은 0으로 시작합니다. 즉 0은 1월이고, 1은 2월입니다.
new Date(2019, 0;
//Tue Jan 01 2019 00:00:00 GMT+0900 (한국 표준시) - 2019년 1월 1일 0시
new Date(2019, 1);
//Fri Feb 01 2019 00:00:00 GMT+0900 (한국 표준시) - 2019년 2월 1일 0시
new Date(2019, 1, 14);
//Thu Feb 14 2019 00:00:00 GMT+0900 (한국 표준시) - 2019년 2월 14일 0시
new Date(2019, 1, 14, 13);
//Thu Feb 14 2019 13:00:00 GMT+0900 (한국 표준시) - 2019년 2월 14일 오후 1시
new Date(2019, 1, 14, 13, 30);
//Thu Feb 14 2019 13:30:00 GMT+0900 (한국 표준시) - 2019년 2월 14일 오후 1시 30분
new Date(2019, 1, 14, 13, 30, 5);
//Thu Feb 14 2019 13:30:05 GMT+0900 (한국 표준시) - 2019년 2월 14일 오후 1시 30분 5초
new Date(2019, 1, 14, 13, 30, 5, 500);
//Thu Feb 14 2019 13:30:05 GMT+0900 (한국 표준시) - 2019년 2월 14일 오후 1시 30분 5.5초


//유닉스 타임스탬프로 날짜 생성
new Date(0);
//Thu Jan 01 1970 09:00:00 GMT+0900 (한국 표준시) - 12:00A A.M, Jan 1, 1970 UTC
//UTC시 기준시간인 1970년 1월 1일 0시 0분 0초에 한국 타임존인 +9시간 더해진 결과이다.
new Date(1000);
//Thu Jan 01 1970 09:00:01 GMT+0900 (한국 표준시)
//UTC시 기준시간인 1970년 1월 1일 0시 0분 0초에서 1초가 지난 시간에 한국 타임존인 +9시간 더해진 결과이다.


//유닉스 시간 원점 이전의 날짜를 구할 때
new Date(-365*24*60*60*1000);
//Wed Jan 01 1969 09:00:00 GMT+0900 (한국 표준시)


//날짜 문자열 해석(표준시를 기준으로 합니다.)
new Date('June 14, 1903');
//Sun Jun 14 1903 00:00:00 GMT+0827 (한국 표준시)

위의 예제를 보면 알 수 있듯이, 항상 현재 지역의 표준시에 따라 나온다는 사실을 알 수 있습니다.

UTC 지역(리스본, 그리니치)에 살지 않는 한, 위의 예제를 크롬 개발자도구와 같이 콘솔에서 표시되는 내용은 

현재 지역의 표준시에 따라 나옵니다.

 

이것이 자바스크립트 Date객체의 가장 큰 문제중 하나라고 합니다. (타임존을 명시할 방법이 없다.)

Date객체는 항상 내부적으로는 UTC기준으로 저장하고, 출력할 때 운영체제에서 정의한 표준시에 맞게 변환합니다.

 

웹페이지에서 날짜 관련 데이터를 표시한다면 사용자의 타임존에 맞게 표시하는 편이 맞지만,

인터넷은 전 세계 어디에서든 쓰이고, 노드가 자바스크립트를 서버로 가져감에 따라 타임존을 더 일관되게

처리할 방법이 필요해졌습니다.

 

 

참고 도서 : 러닝 자바스크립트

Comments