使用Date()構造日期對象,如果傳入非日期格式或者錯誤的日期格式的字符串,仍然能構造出Date對象。
var date = new Date("dream");
console.log('date:', date); //Invalid Date
console.log('date:', typeof date); //“object”
console.log('date:', date instanceof Date); //true
var date2 = new Date("2019-053");
console.log('date2:', date2); //Invalid Date
console.log('date2:', typeof date2); //“object”
console.log('date2:', date2 instanceof Date); //true
示例裏使用非日期格式"dream"(錯誤日期格式“2019-053”)構造Date對象
- 直接輸出date,結果爲Invalid Date
- 使用typeof判斷date的類型,得到結果爲“object”
- 使用instanceof檢測date是否爲Date類型,結果爲true。
使用Date的getTime()方法,Invalid Date對象返回的是一個NaN,可以利用這點來檢查Date對象是否爲Invalid Date。
function isValidDate(date) {
return date instanceof Date && !isNaN(date.getTime())
}
// 也可以
// function isValidDate(date) {
// return date instanceof Date && !isNaN(date.valueOf())
// }
var date = new Date("dream");
console.log('結果',isValidDate(date)); //false
var date2 = new Date("2019-053");
console.log('結果',isValidDate(date2)); //false
var date3 = new Date("2019-05-09");
console.log('結果',isValidDate(date3)); //true