본문 바로가기
자바스크립트

[Javascript] new Date 런타임에 따른 타임존

by devebucks 2022. 8. 19.
728x90

브라우저에서의 Date 객체

parse() 함수, getHour(), setHour() 등의 메소드들은 모두 클라이언트의 로컬 타임존 (정확히는 브라우저가 실행되는 운영체제에 설정된 타임존)에 영향을 받는다.

 

예를 들어 2015-10-12 12:00:00 같은 문자열은 사파리나 IE의 경우 NaN 을 반환하고, 크롬이나 파이어폭스의 경우 로컬 타임존의 값을 반환하며, 경우에 따라 다른 환경에서는 UTC 기준의 값을 반환하기도 한다.

 

.000Z의 의미

 

크롬 브라우저

브라우저 런타임에서는 .000Z를 붙이지 않고 new Date()를 만들어야, 타임존 계산 없이 Date 객체를 만들 수 있다.

맥OS 한국 타임존

new Date('2022-08-04T04:00:33.000Z') =>Thu Aug 04 2022 13:00:33 GMT+0900 (한국 표준시)

new Date('2022-08-04T04:00:33') => Thu Aug 04 2022 04:00:33 GMT+0900 (한국 표준시)

new Date('2022-08-04T04:00') => Thu Aug 04 2022 04:00:00 GMT+0900 (한국 표준시)

 

맥OS 북미 타임존 (-05:00)

new Date('2022-08-04T04:00:33.000Z') => Wed Aug 03 2022 23:00:33 GMT-0500 (북미 중부 하계 표준시)

new Date('2022-08-04T04:00:33') => Thu Aug 04 2022 04:00:33 GMT-0500 (북미 중부 하계 표준시)

new Date('2022-08-04T04:00') => Thu Aug 04 2022 04:00:00 GMT-0500 (북미 중부 하계 표준시)

 

서버에 저장된 시간(UTC): 2022-08-21T04:11:12.000Z

한국시간에서 한국시간 변환: changeUtcToTimeZone(2022-08-21T04:11:12.000Z) => {"date":"2022-08-21","time":"13:11"}

맥OS 토론토-캐나다 타임존: changeUtcToTimeZone(2022-08-21T04:11:12.000Z) => {"date":"2022-08-21","time":"13:11"}

 

맥OS 타임존 북미(GMT-05:00)

console.log(`한국 텍스트 붙인 시간: ${2022-08-25}T${14:31}`); => 2022-08-25T14:31
new Date(`2022-08-25T14:31:00.000Z`); => Thu Aug 25 2022 09:31:00 GMT-0500 (북미 중부 하계 표준시)
⭐️ new Date(`2022-08-25T14:31`);  => Thu Aug 25 2022 14:31:00 GMT-0500 (북미 중부 하계 표준시)

 

Node.js 테스트 환경

Node.js 런타임에서는 .000Z를 붙여줘서 new Date()를 만들어야, 타임존 계산 없이 Date 객체를 만들 수 있다.

맥OS 타임존 한국

new Date('2022-08-04T04:00:33.000Z') =>  2022-08-04T04:00:33.000Z

new Date('2022-08-04T04:00:33') => 2022-08-03T19:00:33.000Z

new Date('2022-08-04T04:00') => 2022-08-03T19:00:00.000Z

 

 

맥OS 타임존 북미(GMT-05:00)

 

console.log(`한국 텍스트 붙인 시간: ${2022-08-25}T${14:31}`); => 2022-08-25T14:31
⭐️  new Date(`2022-08-25T14:31:00.000Z`); => 2022-08-25T14:31:00.000Z
new Date(`2022-08-25T14:31`); => 2022-08-25T19:31:00.000Z
728x90

댓글