Gab*_*ens 116

试试这个:

var date = new Date();
console.log(date instanceof Date && !isNaN(date.valueOf()));
Run Code Online (Sandbox Code Playgroud)

这应该回来了true.

UDATED:添加了isNaN检查以处理由Julian H. Lam评论的案例

  • `new Date('derp')instanceof Date // true` (19认同)
  • @ JulianH.Lam我在valueOf属性中添加了一个isNaN验证来处理这种情况.谢谢!!! (3认同)
  • 我实际上已经扩展了我的例子。即使使用 MomentJS 的 isValid() 函数也是不正确的。看起来 JavaScript 使用了 Date.parse 函数 - 当它无法计算文本时,它只使用数字,因此 `new Date('Test 1')` 的计算结果与 `new Date('1')` 相同。让它正常工作的唯一方法是开发自己的字符串解析,或者您可以使用 https://date-fns.org/ - `isValid()` 函数似乎可以正常工作。 (3认同)
  • 为 new Date('06/31/2016') 返回 true,因为 Javascript 将其转换为 7/1/2016。但是,对于 2016 年 6 月 32 日返回 false。只是要记住一些事情。唯一的缺点。 (2认同)
  • @ JulianH.Lam-但是“不要将我转换为日期1”也会返回true (2认同)