본문 바로가기

JavaScript

JavaScript 날짜 ISOString 변환시 GMT 반영하기

JavaScript에서 현 날짜 또는 과거 날짜의 데이터를 정형화하기위해 아래 내용을 자주 사용한다.

 

new Date().toISOString() //.slice(0, 19).replace('T', ' ');

 

DatetoISOString() 함수는 ISO 8601에 기반한 24 또는 27 길이의 날짜/시간을 리턴해주는 함수인데,

유의점이 항상 zero-UTC timezone으로 리턴해준다는 문제점이 있다.

 

이 문제때문에, 작성한 코드가 한국시각 기준으로 00시에서 09시 사이에 문제가 되는 현상을 가끔 마주하곤한다.

 

 

 

이를 실제 현 시각으로 보여주기 위해,

아래와 같이 Date로 부터 timezone을 얻어내, 계산값에 반영할 수 있다.

var timezoneOffset = new Date().getTimezoneOffset() * 60 * 1000;

var curDate = new Date();
curDate.setTime(curDate.getTime() - timezoneOffset);

또는

var timezoneOffset = new Date().getTimezoneOffset() * 60 * 1000;
var curDate = new Date(Date.now() - timezoneOffset);

 

날짜정보만 사용하는 경우

curDate.setHours(12); 

등을 이용해 임시방편으로 사용할 수 있지만,

정확한 정보를 실어주기 위해서는 timezoneOffset 계산 후 적용하는 것이 적당하다.

'JavaScript' 카테고리의 다른 글

[JavaScript] Date 관련 iOS에서의 문제  (0) 2022.04.21