일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- context
- Programmers
- React18
- React API 참고서
- React 공식문서
- hook
- React 고급 안내서
- background tab
- notFound()
- 고급안내서
- CSS
- background: url
- Nextjs
- Render Props
- Next13
- React 18
- react hook
- React 고급안내서
- background setInterval
- react
- background setttimeout
- getUTCDate
- Nextjs React 18
- codingtest
- Javascript
- React 18 Nextjs
- RTK Query
- react-helmet
- next13 head
- Babel
Archives
- Today
- Total
akjfal
getUTCDate와 getDate를 유의해서 사용하자 본문
getDate()의 경우에는 로컬 시간을 기준으로 데이터를 가져옵니다. 그렇기 때문에 daylight saving time(서머타임)을 고려해서 일정 시간 표기가 사라지는 등의 문제가 발생합니다. 따라서 보통 웹 프론트엔드에서 시간을 만들어서 연산하기보다 서버에서 시간을 전달해주고 이를 사용하는 것을 권장합니다.
에러 발생
아래 코드의 의도는 2월 1일이였지만, 실제로 2월 32일이 출력됩니다.
const day = '2023.02.01';
const date = new Date(day);
const dateString = date.getFullYear() + "년" + (date.getMonth() + 1) + "월" + (date.getUTCDate() + 1) + "일;
// 결과 : 2023년2월32일
원인
위와 같은 값이 나온 원인은 한국 기준으로 UTC는 -9시간을 해야하는데
2023.02.01의 경우 **Wed Feb 01 2023 00:00:00 GMT+0900 (한국 표준시)**로 표현이 됩니다. ****따라서 아래와 같이 값이 연산됩니다.
- getFullYear : 2023
- getMonth : 1 → month의 경우 0부터 날짜가 출력됩니다.
- getUTCMonth : 0
- getDate : 1
- getUTCDate : 31
UTC의 경우 -9시간인 1월 31일 기준으로 값이 나오기 때문에 위 코드는 2월 32일이라는 해괴한 값이 나오게 되는 것입니다.
💡 day에 +1이 되어져 있었는데 이는 -9시간으로 인해서 하루가 늦게 나오는 것을 보완하기 위했던 코드로 추측됩니다.
'하루의 이슈' 카테고리의 다른 글
Date()와 new Date()의 차이 (0) | 2023.05.09 |
---|---|
.val()메서드의 파라미터로 undefined (0) | 2023.05.09 |
background: url을 유의해서 사용하자 (0) | 2023.05.09 |
background에서 setinterval이나 settimeout 돌리기 (0) | 2023.05.09 |
Next13 notFound()에 대해 알아보자 (0) | 2023.05.09 |
Comments