JavaScript/객체

[JavaScript]Date 객체 유효성 체크

DevStory 2021. 12. 23.

이번 포스팅에서는 JavaScript에서 Date 객체가 유효한 값을 가지는지 체크하는 방법을 소개합니다.

 


isNaN() 함수와 instanceof 연산자

instanceof 연산자와 isNaN() 함수를 같이 사용하여 Date 객체의 유효성을 체크할 수 있습니다.

 

instanceof 연산자는 객체의 타입을 확인할 수 있는 연산자로 boolean 값을 반환합니다.

 

다음은 JavaScript의 객체의 타입을 instanceof 연산자로 확인하는 예제입니다.

new Date() instanceof Date
// true

new Array() instanceof Array
// true

new String() instance String
// true

new String() instance Array
// false

 

isNaN() 함수는 값이 NaN인지 boolean 값을 반환하는 함수입니다. NaN이면 true, 아니면 false입니다.

isNaN(NaN)
// true

isNaN(false)
// false

그리고 isNaN() 함수는 객체를 숫자로 변환할 때, 타임스탬프로 변환되는지 확인할 수 있습니다.

 

다음은 위에서 소개한 isNaN() 함수와 instanceof 연산자를 조합하여 Date 객체가 유효한지 판별합니다.

const isValidDate = function(value) {
  return value instanceof Date && !isNaN(value);
}

let validDate = new Date();
let invalidDate = new Date('test');

console.log(isValidDate(validDate));
// true

console.log(isValidDate(invalidDate));
// false

 

▶ Date.parse

Date.parse() 함수는 전달된 문자열이 날짜 형식인지 구문 분석을 하는 함수입니다. 전달된 문자열이 유효한 경우 UNIX 타임스탬프가 반환되며, Date.parse() 함수가 문자열을 날짜 형식으로 해석 못하는 경우 NaN이 반환됩니다.

 

다음은 Date.parse() 함수 사용 방법과 Date.parse() 반환 값을 new Date()에 전달하는 예제입니다.

Date.parse('2020/12/31');
// 1609340400000

new Date(Date.parse('2020-12-31'))
// Thu Dec 31 2020 00:00:00 GMT+0900 (한국 표준시)

Date.parse('2020-12-31');
// 1609372800000

new Date(Date.parse('2020-12-31'))
// Thu Dec 31 2020 09:00:00 GMT+0900 (한국 표준시)

Date.parse('Test')
// NaN

 

다음과 같이 Date.parse() 함수와 isNaN() 함수를 사용하여 Date 객체의 유효성을 체크할 수 있습니다.

let validDate = new Date(); 
let invalidDate = new Date('test');

console.log(!isNaN(Date.parse(validDate)));
// true

console.log(!isNaN(Date.parse(invalidDate)));
// false

isFinite() 함수와 instanceof 연산자

두 번째 방법으로는 isNaN() 함수 대신 isFinite() 함수를 사용할 수 있습니다.

 

isFinite() 함수는 전달된 값이 유한 숫자로 변환할 수 있는지 boolean 값으로 판별합니다.

 

유한 숫자로 변환 가능하면 true가 반환되며, 그렇지 않은 경우 false가 반환됩니다.

 

다음은 isFinite() 함수와 instanceof 연산자를 사용하여 Date 객체의 유효성을 체크하는 예제입니다.

const isValidDate = function(value) {
  return value instanceof Date && isFinite(value);
}

let validDate = new Date();
let invalidDate = new Date('test');

console.log(isValidDate(validDate));
// true

console.log(isValidDate(invalidDate));
// false
반응형

댓글