프로그래밍 언어/HTML,CSS,JS

JavaScript에서 "invalid date" 날짜 인스턴스 감지

Rateye 2021. 8. 6. 10:36
728x90
반응형
질문 : JavaScript에서 "유효하지 않은 날짜"날짜 인스턴스 감지

JS에서 유효한 날짜 개체와 잘못된 날짜 개체의 차이점을 말하고 싶지만 방법을 알 수 없습니다.

var d = new Date("foo");
console.log(d.toString()); // shows 'Invalid Date'
console.log(typeof d); // shows 'object'
console.log(d instanceof Date); // shows 'true'

isValidDate 함수 작성에 대한 아이디어가 있습니까?

  • Ash는 Date.parse 를 권장했습니다. 이는 날짜 문자열이 유효한지 확인할 수있는 권한있는 방법을 제공합니다.
  • 가능한 경우 내 API가 Date 인스턴스를 수락하고 유효한지 여부를 확인 / 어설 션 할 수 있도록하는 것이 좋습니다. Borgar의 솔루션은 그렇게하지만 브라우저에서 테스트해야합니다. 더 우아한 방법이 있는지도 궁금합니다.
  • Ash는 내 API가 Date 인스턴스를 전혀 받아들이지 않도록 고려했습니다. 이것이 가장 쉽게 확인할 수 있습니다.
  • Date 인스턴스에 대한 테스트를 제안한 Date 의 시간 값에 대한 테스트를 제안했습니다. 날짜가 유효하지 않은 경우 시간 값은 NaN 입니다. ECMA-262로 확인한 결과이 동작은 표준에 있습니다. 이것이 바로 제가 찾고있는 것입니다.
답변

방법은 다음과 같습니다.

if (Object.prototype.toString.call(d) === "[object Date]") {
  // it is a date
  if (isNaN(d.getTime())) {  // d.valueOf() could also work
    // date is not valid
  } else {
    // date is valid
  }
} else {
  // not a date
}

업데이트 [2018-05-31] : 다른 JS 컨텍스트 (외부 창, 프레임 또는 iframe)의 Date 객체에 관심이없는 경우 다음과 같은 간단한 형식을 선호 할 수 있습니다.

function isValidDate(d) {
  return d instanceof Date && !isNaN(d);
}
출처 : https://stackoverflow.com/questions/1353684/detecting-an-invalid-date-date-instance-in-javascript
728x90
반응형