javascript - 新的 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
解决方案
如果有人面临同样的问题,在我的例子中,我从节点服务器获得了一个 API 响应,它有一个字符串作为响应。该字符串包含 ISO 格式的日期或其中的任何其他内容。假设您仅在字符串 ISO 格式中获得日期。解决方法如下
moment('abc 12', moment.ISO_8601, true).isValid()
输出 -
False
PS学分:我的朋友帮助解决了这个问题,他不想写答案,这就是我这样做的原因。
推荐阅读
- javascript - 我如何从阵列中获得下一次祈祷时间?
- firebase - 如何下载已在 firebase 免费域中上传的 Firebase 项目?
- python - 为什么谷歌镜头无法识别使用 PIL 库制作的图像上的 pyqrcode 制作的 QR?
- mysql - SQL 查询、JOIN 和 CASE 语句给出错误
- mysql - 使用 WHERE 子句时 MySQL 查询不显示所有数据
- amazon-web-services - regexp_count 返回不正确的计数(Redshift)
- python-3.x - Fastai v2 IndexError:目标 2 超出范围
- python - 一个接一个地运行许多python脚本
- android - 仅在前台应用:如何避免“未声明后台位置访问”
- android - 如何以拆分模式打开另一个应用程序 [android]