스택큐힙리스트

자바스크립트에서 "잘못된 날짜" Date 인스턴스를 탐지하는 방법 본문

카테고리 없음

자바스크립트에서 "잘못된 날짜" Date 인스턴스를 탐지하는 방법

스택큐힙리스트 2024. 1. 30. 19:31
반응형

JS에서 유효한 날짜 객체와 유효하지 않은 날짜 객체의 차이점을 알려드리고 싶습니다. 하지만 해결 방법을 찾지 못했습니다:


var d = new Date(foo);
console.log(d.toString()); // '잘못된 날짜'를 표시합니다
console.log(typeof d); // '객체'를 표시합니다
console.log(d instanceof Date); // '참'을 표시합니다

isValidDate 함수를 작성하기 위한 아이디어가 있으신가요?


  • Ash는 날짜 문자열을 구문 분석하기 위해 Date.parse를 추천했습니다. 이는 날짜 문자열이 유효한지 확인하는 권위있는 방법을 제공합니다.

  • 가능하다면, 내 API가 Date 인스턴스를 수락하고 유효한지 확인/단언할 수 있도록 하는 것을 원합니다. Borgar의 해결책은 이를 수행하지만 브라우저 간에 테스트해야 합니다. 또한 더 우아한 방법이 있는지 궁금합니다.

  • Ash는 내 API가 아예 Date 인스턴스를 받지 않도록 고려하게 만들었는데, 이렇게 하는 것이 가장 쉽게 유효성을 검증할 수 있습니다.

  • Borgar는 Date 인스턴스를 테스트한 다음 Date의 시간 값을 테스트하는 것을 제안했습니다. 날짜가 유효하지 않으면 시간 값은 NaN입니다. ECMA-262를 확인했으며 이 동작은 표준에 정의되어 있으며, 이것이 바로 제가 찾고 있는 것입니다. (ECMA-262 참조)

답변 1

여기에 제 방법입니다:


if (Object.prototype.toString.call(d) === [object Date]) {
// 날짜일 경우
if (isNaN(d)) { // d.getTime() 또는 d.valueOf()도 작동합니다
// 날짜 객체가 유효하지 않습니다
} else {
// 날짜 객체가 유효합니다
}
} else {
// 날짜 객체가 아닙니다
}

업데이트 [2018-05-31]: 다른 JS 컨텍스트 (외부 창, 프레임 또는 iframes)에서 가져온 Date 객체에 관심이 없는 경우, 다음 단순한 형태가 선호될 수 있습니다:


function isValidDate(d) {
return d instanceof Date && !isNaN(d);
}

업데이트 [2021-02-01]: 유효하지 않은 날짜 (2013-13-32)와 유효하지 않은 날짜 객체 (new Date('foo')) 사이에는 근본적인 차이가 있다는 점을 유의해주십시오. 이 답변은 날짜 입력 유효성을 검증하는 것이 아니라 Date 인스턴스가 유효한지 여부만 다룹니다.

답변 2

JavaScript에서 유효하지 않은 날짜 Date 인스턴스를 감지하는 방법
JavaScript에서는 Date 객체를 사용하여 다양한 날짜와 시간 연산을 수행할 수 있습니다. 그러나 때로는 유효하지 않은 날짜로 인한 문제가 발생할 수 있습니다. 이런 문제를 해결하고 유효하지 않은 날짜를 식별하는 방법을 알아보겠습니다.
유효하지 않은 날짜는 JavaScript에서 'Invalid Date'로 표시됩니다. 이는 날짜 값이 잘못된 경우 발생할 수 있습니다. 이러한 상황은 사용자로부터 제공받은 잘못된 입력, 잘못된 시스템 설정 또는 잘못된 날짜 계산에 의해 발생할 수 있습니다. 이러한 경우를 대비하기 위해 JavaScript는 다양한 유효성 검사 도구와 함수를 제공합니다.
먼저, Date 객체를 생성하고 유효성을 확인하는 방법을 알아보겠습니다. Date 객체에 유효하지 않은 날짜가 포함되어 있는지 확인하기 위해 `isNaN()` 함수를 사용할 수 있습니다. 이 함수는 숫자가 아닌지 여부를 확인하는데 사용되며, Date 객체에서는 유효한 날짜 값이 숫자로 표현되므로 이를 활용할 수 있습니다. 다음은 예시 코드입니다.
```javascript
const date = new Date('2022-02-29');
if (isNaN(date.getTime())) {
console.log('유효하지 않은 날짜입니다.');
} else {
console.log('유효한 날짜입니다.');
}
```
이 코드는 '2022-02-29'가 유효한 날짜가 아니기 때문에 유효하지 않은 날짜입니다.를 출력합니다.
또 다른 방법은 `isValidDate()`와 같은 사용자 정의 함수를 만드는 것입니다. 이를 통해 복잡한 날짜 유효성 검사를 수행할 수 있습니다. 예를 들어, 다음과 같은 코드로 유효한 날짜인지 검사할 수 있습니다.
```javascript
function isValidDate(date) {
return date instanceof Date && !isNaN(date);
}
const invalidDate = new Date('2022-02-29');
if (!isValidDate(invalidDate)) {
console.log('유효하지 않은 날짜입니다.');
} else {
console.log('유효한 날짜입니다.');
}
```
위의 코드는 `date`가 Date 객체인지 확인하고, NaN이 아닌지 확인하여 유효한 날짜인지를 판별합니다.
유효하지 않은 날짜를 검사하기 위해 위의 코드를 사용하면 JavaScript에서 유효하지 않은 날짜를 쉽게 식별할 수 있습니다. 이를 통해 잘못된 입력 값 또는 잘못된 계산으로부터 발생할 수 있는 날짜 관련 문제를 예방하고 처리할 수 있습니다.
상위 랭킹을 차지하기 위해 적절한 키워드를 사용한 이 essay는 JavaScript에서 유효하지 않은 날짜 Date 객체를 감지하는 방법에 대한 정보를 제공합니다. 이 문제는 JavaScript를 사용하는 개발자 및 웹 개발자에게 특히 중요하며, 올바른 유효성 검사 기법을 통해 복잡한 날짜 처리를 수행할 수 있도록 도와줍니다. 이루어진 유용한 지침과 예시 코드를 통해 독자들이 더 나은 소프트웨어를 개발할 수 있도록 도움이 되기를 기대합니다.

반응형
Comments