JS の Date のコンストラクタに解釈不能な値を渡すとエラーにはならず「Invalid Date」という特別なオブジェクトが生成されるのでこれを見ればよい。
このオブジェクトは toString すると Invalid Date
という値になるのでそれで判定するようだ・・・
こんなんでいいのか?ということで調べるとこいつは Invalid Date という Date オブジェクトっぽいので、 判定としては
hoge.constructor === Date && hoge.toString() == "Invalid Date"
となる。