강의로 돌아가기
dkdntxhfh

13번 실패

13번만 실패하는데 어떤 부분 때문에 틀리는 걸까요?
코드 리뷰 부탁드립니다

작성중인 코드―solution.js
1
2
3
4
5
6
7
8
9
10
11
const getDateDiff = (d1, d2) => {
  const diffDate = new Date(d1).getTime() - new Date(d2).getTime();
  return Math.abs(diffDate / (1000 * 60 * 60 * 24));
}

function solution(a, b) {
    const arr = ["FRI","SAT","SUN","MON","TUE","WED","THU"];
    const diff = getDateDiff("2016-1-1", `2016-${a}-${b}`);
    const current = (diff % 7) % arr.length
    return arr[current];
}
1 개의 답변
mule-heo

a, b 모두 10 이상인 경우에 타임스탬프의 차이로부터 얻은 diff의 값이 x.375의 형태로 출력되는 것을 확인했습니다.

a와 b 모두 10 이상인 경우에 Date에 전달되는 문자열은 'YYYY-MM-DD' 형태가 됩니다.(예: 10월 10일, 2016-10-10)

new Date('YYYY-MM-DD')
시간대 반영없이 그리니치 표준시를 기준으로 타임스탬프가 반환되었습니다.

예: new Date('2016-01-01').toISOString()
2016-01-01T00:00:00.000Z

new Date('YYYY-M-D') 또는 new Date('YYYY-MM-D') 또는 new Date('YYYY-M-DD')
시간대를 반영하여 조정된 타임스탬프가 반환되었습니다.

예: new Date('2016-1-1').toISOString()
2015-12-31T15:00:00.000Z

시간대 반영/미반영 타임스탬프가 섞여서 나타나는 현상으로 보이니 문자열 양식을 통일하거나 오차를 적절히 조절하시면 될 것 같아요!

  • dkdntxhfh

    알려주신 대로 고쳤더니 해결됐습니다! 답변 감사합니다!!

    dkdntxhfh―2023.12.28 18:21
답변 쓰기
이 입력폼은 마크다운 문법을 지원합니다. 마크다운 가이드 를 참고하세요.