제로 기반 getMonth() 레슨

Date 프로토타입의 getMonth() 메서드를 사용하여 얻은 교훈



어제 현재 날짜에 대한 웹 양식을 작성할 때 날짜 문제가 있는 경우 사용자에게 알리기 위해 내부 웹 사이트에 작은 기능을 추가하는 프로젝트가 있었습니다. 이 기능은 로컬 컴퓨터 날짜/시간을 사용자가 입력한 HTML 날짜 유형 입력 요소의 날짜/시간과 비교합니다. 입력한 날짜가 오늘이 아닌 경우 잘못된 날짜에 대한 데이터 입력에 대한 경고 메시지가 표시됩니다. 이는 사용자가 잘못된 데이터를 입력하는 문제를 해결하기 위한 것입니다.

이에 대한 나의 접근 방식은 새 날짜 변수를 사용자의 입력 값과 빠르게 비교한 다음 일치하지 않는 경우 사용자에게 alert()를 트리거하는 것이었습니다.

let myDate = new Date()
console.log(myDate)
// Thu Aug 10 2022 12:39:27 GMT-0700 (Pacific Daylight Time)


완벽합니다. 정확한 날짜/시간을 가져오는 변수가 있습니다.

HTML 요소는 날짜를 YYYY/MM/DD 형식으로 저장하고 getDate는 MM/DD/YYYY 순서로 가져오기 때문에 직접 비교할 수 없습니다.

내 접근 방식은 사용자의 날짜 문자열과 빠르게 일치하도록 날짜 문자열을 뒤집는 것이었습니다. 이를 수행하는 방법에는 여러 가지가 있지만 이것이 내가 사용한 단계입니다.

  let myDate = new Date();
  let newDate = []
newDate.push(myDate.getFullYear(), '-', myDate.getMonth(), '-', myDate.getDay())
// -> [2022,-,7,-,3]
console.log('newDate.join()' + newDate.join(''))
// -> 2022-7-3


오류가 보이십니까? 두 개가 있었는데 첫 번째는 달이고 두 번째는 일입니다. 이 빠른 기능을 서둘러 만들기 위해 잘못된 달력 날짜를 제공하는 getDate() 대신 getDay()를 사용했습니다.

나는 오류를 알아차리지 못했고 getMonth()가 그 전 달에서 가져오고 있었지만 날짜를 추출하기 위해 다른 시도를 했을 때 8월을 가져오고 있다는 사실에 상당히 당황했습니다. 그래서 Twitter로 가서 커뮤니티에 질문했습니다.









크리스 벤자민


@_chrisbenjamin






너무 혼란스러워요... 뭔가 잘못하고 있는 게 틀림없어요. 'let myDate = new Date()'는 어떻게 적절한 날짜와 시간을 표시하지만 getMonth(), getDay() 및 getFullYear()를 사용하여 정보를 추출하면 2022년 7월 3일을 가져옵니까?


오후 15:56 - 2022년 8월 10일









몇몇 도움이 되는 사람들이 신속하게 답을 내놓았는데, 이때까지 getMonth()가 날짜 작업을 하는 동안 0부터 시작하는 달을 가져오는 단서가 없었습니다. 여러 사람이 무슨 일이 일어나고 있는지 명확하게 설명하는 MDN getMonth을 참조했습니다.

다른 오류는 getMonth()에 관한 것입니다. 이 함수는 0 기준 값의 날짜에서 월을 추출합니다. 즉, 달력 연도의 경우 월은 0-11로 번호가 지정되는 반면 8월은 8이 아닌 7입니다.

The getMonth() method returns the month in the specified date according to local time, as a zero-based value (where zero indicates the first month of the year). - MDN



대부분의 경우 날짜를 추출할 때 myDate.toLocaleString() 또는 myDate.toLocaleDateString()를 사용하여 출력을 마스킹하고 로케일 때문에 적절한 월을 표시합니다.

myDate.toLocaleString()
// -> '8/11/2022, 12:54:53 PM'
myDate.toLocaleDateString()
// -> '8/11/2022'


결론



다른 사람이 앞으로 이와 같은 오류가 발생하지 않도록 돕기 위해 이 정보를 여러분 모두와 공유하고 싶었습니다. 날짜 작업을 할 때마다 어떤 유형의 문제에 부딪히는데 이것은 날짜 작업에서 배워야 할 또 다른 교훈이 되었습니다.

좋은 웹페이지 즐겨찾기