gpt4 book ai didi

javascript - 防止 moment.js 接受整数作为有效的 ISO8601 日期

转载 作者:行者123 更新时间:2023-12-03 23:38:56 24 4
gpt4 key购买 nike

我有一些用于创建仪表板小部件的 API。这些 API 返回传递给 Google Charts 的基本名称/值数据对。 Moment.js 检查该值是否为 ISO8601 日期,如果是,则作为日期实例传递给 Google Charts。
但是,ISO_8601 isValid如果日期是一个简单的整数,则 check 当前返回 true,例如1234 :

var myInt = 1234;
if (moment(myInt, moment.ISO_8601, true).isValid()) {
console.log("Valid!");
}
我找不到在 moment.js 代码中强制使用日期格式的必要功能,所以这个残酷的黑客现在有效:
var myInt = 1234;
if (JSON.stringify(myInt).includes("T") && moment(myInt, moment.ISO_8601, true).isValid()) {
console.log("Valid!");
}
有没有 正确 使用 moment.js 配置 isValid() 的方法查看?
我的 API 中的日期格式是 yyyy-mm-ddThh:mm:ss (最后没有 Z)。

最佳答案

根据THIS回答,当使用严格解析(最后一个参数设置为 true )时,您还应该指定解析格式,以避免出现您描述的情况。正如许多用户所注意到的,指定字符串格式而不是使用 moment.ISO_8601按预期工作。

alert(isISODateValid(123)); //false
alert(isISODateValid("2011-10-10T14:48:00")); //true
alert(isISODateValid("2011-10-10T14:48:00Z")); //true

function isISODateValid(date) {

return moment(date.toString().replaceAll("Z",""), "YYYY-MM-DDTHH:mm:ss", true).isValid();

}
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.29.1/moment.min.js"></script>

编辑:更新片段 - 如果日期包含“Z”后缀,在解析验证源日期格式之前将其删除

关于javascript - 防止 moment.js 接受整数作为有效的 ISO8601 日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67211411/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com