Joi:验证日期是否比现在晚x天

6

验证日期字段是否大于现在x天。

目前我有一个检查日期是否大于现在的代码片段。

planned_date: Joi.date().greater('now').required()

但我想验证 planned_date 至少比现在晚2天。这可以结合 moment.js 实现,但无法使其正常工作。


你能否像这样做?const dateLater = moment.tz(new Date(), '').unix() + 48 * 60 * 60这将给你2天后的日期,时间相同,然后稍后你可以这样做planned_date: Joi.date().greater(dateLater).required() - Ashishssoni
@reD 这里我只是担心 dateLater 变成了一个硬编码的值,而不是每次都被重新计算。我会尝试看看这是否可行。 - YetAnotherBot
此外,内置 JOI 的功能会更好。 - YetAnotherBot
3
啊,其实我不确定在Joi上是否有任何构建,但是这肯定有效。 “planned_date:Joi.date().required()。greater(Date.now()+ 48 * 60 * 60 * 1000)” - Ashishssoni
@rED,您上面的评论使用“Date.now() + 48 * 60 * 60 * 1000”对我很有效。我认为您也可以将其作为答案添加。 - YetAnotherBot
当然,我会在答案中添加它。很高兴能帮忙:') - Ashishssoni
1个回答

8

以下代码将检查日期是否大于2天,我们使用Date.now()获取当前时间戳(以epoch格式),然后在时间戳中加上2天的时间(以epoch格式)来获得所需的验证。

planned_date: Joi.date().required().greater(Date.now() + 48 * 60 * 60 * 1000)


验证请求参数时,这样做是正确的方式吗?因为Date.now将会是服务器打开的日期(或类似的东西)。我之前遇到了这个问题,使用自定义验证器取代了这个答案。因此,我在每个请求中都在自定义验证器中获取Date.now - Cache

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接