首页 > 解决方案 > 新的 Date() 函数和 moment() 不会检测以数字开头和结尾的字符的输入,例如 'abc 12' 作为无效日期

问题描述

我期待一个功能来检查给定的字符串是否是日期;鉴于我可能有一个包含数字的字符串,而不仅仅是其中的字符串。

输入是

'abc 12'

正如我们所知,'abc 12' 还不是有效的日期字符串,new Date() 和 moment 将其视为有效的日期字符串并给出输出。

new Date('abc 12')

预期产出 -

Invalid Date

实际输出 -

Sat Dec 01 2001 00:00:00 GMT+0530 (India Standard Time)

我也尝试过使用时刻

var moment = require("moment");
var currentDate = moment('abc 123').toString()
document.getElementById("app").innerHTML = currentDate;

预期产出 -

Invalid date

实际输出 -

Fri Jan 01 0123 00:00:00 GMT+0600

标签: javascriptmomentjs

解决方案


如果有人面临同样的问题,在我的例子中,我从节点服务器获得了一个 API 响应,它有一个字符串作为响应。该字符串包含 ISO 格式的日期或其中的任何其他内容。假设您仅在字符串 ISO 格式中获得日期。解决方法如下

moment('abc 12', moment.ISO_8601, true).isValid()

输出 -

False

PS学分:我的朋友帮助解决了这个问题,他不想写答案,这就是我这样做的原因。


推荐阅读