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
関数を書くためのアイデアはありますか?
Date.parse
日付文字列の解析にはAshをお勧めします。これにより、日付文字列が有効かどうかを確認する信頼できる方法が提供されます。- 可能であれば、APIにDateインスタンスを受け入れさせ、それが有効かどうかをチェック/アサートできるようにしたいと思います。Borgarのソリューションはそれを行いますが、ブラウザー間でテストする必要があります。よりエレガントな方法があるかどうかも疑問です。
- Ashは、APIに
Date
インスタンスをまったく受け入れさせないことを検討させました。これは検証が最も簡単です。 - Borgarは、
Date
インスタンスのテストと、Date
の時間値のテストを提案しました。日付が無効な場合、時間の値はNaN
です。ECMA-262で確認したところ、この動作は標準であり、まさに私が求めているものです。
return ( Object.prototype.toString.call(d) === "[object Date]" && !isNaN(d.getTime()) );