현인
[Javascript] Date.getHours 시간 안 맞는 문제 본문
date 시간 값을 가져오는 과정에서 시간이 안 맞는 문제가 있어서 알아보게 되었다.
문제 파악
const date = new Date("2023-08-22T08:32:03.986Z")
const hour = date.getHours(date);
console.log(date): // Tue Aug 22 2023 17:32:03 GMT+0900 (한국 표준시)
console.log(hour); // 17
Date.getHours() 메서드는 인자로 넘겨준 날짜의 시간 값을 24시간 형식(0~23)으로 반환해준다.
하지만 위 코드에서 보이는 것처럼 hour을 콘솔에 출력해보면, '17'이라는 값이 나온다.
이렇게 되는 이유는 Date 생성자 함수를 사용해서 가져온 현재 날짜와 시간은 기본적으로 사용자의 PC에 설정 된 표준 시간대를 기준으로 표시되기 때문이다. (대한민국의 경우 UTC + 9시간)
따라서 콘솔에 출력된 시간이 8시가 아닌 17시가 출력된 것이다.
만약, newDate 생성자 함수로 받은 날짜의 시간 값을 그대로 사용하고 싶다면 아래와 같이 해결할 수 있다.
해결 방법
const date = new Date("2023-08-22T08:32:03.986Z")
// 1. 시간대 차이값을 가져와서 더해주는 방법
console.log(date.getTimezoneOffset()) // -540
const hour1 = date.getHours() + (date.getTimezoneOffset() / 60);
// 2. 9시간을 빼는 방법
const hour2 = date.getHours() - 9;
console.log(hour1); // 8
console.log(hour2); // 8
참고 자료
https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/Date
반응형
'개발 일기' 카테고리의 다른 글
[React] 텍스트 개행 처리 (0) | 2023.10.27 |
---|---|
[TypeScript] 동적 키 타입 정의 (1) | 2023.10.25 |
티맥스 커머스 프론트엔드 채용 후기 (4) | 2023.06.24 |
[warning] Please update your code: use createWrapper() and wrapper.useWrappedStore() (0) | 2023.05.02 |
Axios 모듈화 with 커스텀 훅 (0) | 2023.05.01 |