【发布时间】:2019-08-05 17:19:54
【问题描述】:
我正在关注this 示例来验证日期字符串。
虽然下面这个例子的计算结果为真。
var date = new Date('12/21/2019');
console.log(date instanceof Date && !isNaN(date.valueOf()));
即使它是错误的日期,下面的示例也评估为 true。我的意思是错误的日期,日历中不存在该日期。
var date = new Date('02/31/2019');
console.log(date instanceof Date && !isNaN(date.valueOf()));
有没有更好的方法?
【问题讨论】:
-
为什么你认为第二个例子是一个糟糕的日期?
-
@ethane 我想“坏”的意思是“不存在”。不过需要明确的是,JavaScript 认为这是 3 月 3 日。就像它将 4 月的“0 日”视为 3 月的最后一天一样。
-
@TylerRoper,糟糕透顶。 JS 足够聪明,实际上不会给你 2019 年 2 月 31 日。它会产生一个 3 月的日期。
-
@TylerRoper 我确实理解 JS 认为它是什么。但对于实际使用,这并没有帮助。
-
@TheFallenOne 调用
moment(input)没有格式字符串已被弃用。如果您要走 moment.js 路线,Ramy 在下面提供的答案应该仍然是完全有效的:)
标签: javascript date