首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >DayJS isValid的行为与矩不同

DayJS isValid的行为与矩不同
EN

Stack Overflow用户
提问于 2019-10-03 09:47:42
回答 5查看 10.8K关注 0票数 8

我试图使用dayjs验证生日,但是它的isValid返回的是一个不存在的日期的true。有趣的是,isValid by moment运行得很好。

代码语言:javascript
运行
复制
dayjs('2019/02/31', 'YYYY/MM/DD').isValid() // true
moment('2019/02/31', 'YYYY/MM/DD').isValid() // false

我不能转到moment,因为dayjs的重量很轻

知道怎么解决这个问题吗?

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2019-10-03 10:16:15

请看这条线。基本上,isValid不验证是否存在已传递的日期,它只是验证已正确解析的日期。

我不太确定这是否适用于所有场景(特别是在本地化的情况下),但您可以尝试这样的方法:

代码语言:javascript
运行
复制
function validate(date, format) {
  return dayjs(date, format).format(format) === date;
}

validate('2019/02/31', 'YYYY/MM/DD') // false

这种检查的原因是

代码语言:javascript
运行
复制
dayjs('2019/02/31', 'YYYY/MM/DD').format('YYYY/MM/DD')

返回2019/03/03。然后,当您将其与初始日期进行比较时(您应该能够获得相同的格式),您应该得到相同的值--在这种情况下,您没有。

票数 6
EN

Stack Overflow用户

发布于 2021-08-28 14:38:54

2021年8月:现在可以用.isValid()方法检测这些将第三个参数作为真传递给dayjs构造函数的无效日期:

代码语言:javascript
运行
复制
dayjs('2019/02/31', 'YYYY/MM/DD').isValid() // true
dayjs('2019/02/31', 'YYYY/MM/DD',true).isValid() // false

有关这个严格解析参数的更多信息,现在可以在官方医生上找到。

注意:在Node.js中,我必须先加载customParseFormat插件,然后调用isValid()才能获得预期的有效性结果:

代码语言:javascript
运行
复制
const dayjs = require("dayjs");
var customParseFormat = require("dayjs/plugin/customParseFormat");
dayjs.extend(customParseFormat);
票数 8
EN

Stack Overflow用户

发布于 2019-10-03 10:12:12

moment.isValid()如何工作(溢出检查)

如果解析输入的结果不存在,moment#isValid将返回false。

dayjs.isValid()如何工作

如果您查看源代码:

src/index.js

代码语言:javascript
运行
复制
this.$d = parseDate(cfg) // Line 75
// ...
isValid() { // Line 96
  return !(this.$d.toString() === C.INVALID_DATE_STRING)
}

src/constant.js

代码语言:javascript
运行
复制
export const INVALID_DATE_STRING = 'Invalid Date'

如果您查找源解析,那么它不是一个直接的Date.parse(),因为它考虑了地区、日期格式等因素,但是似乎每个传递到Date()或Date.parse()的有效日期都是有效的。

代码语言:javascript
运行
复制
Date.parse('2019/02/31') // 1551567600000
new Date(2019/02/31) // Thu Jan 01 1970 01:00:00 GMT+0100
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58216504

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档