JavaScript에서 현 날짜 또는 과거 날짜의 데이터를 정형화하기위해 아래 내용을 자주 사용한다.
new Date().toISOString() //.slice(0, 19).replace('T', ' ');
Date의 toISOString() 함수는 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 |
---|