英文:
should be a maximum of 30 days between two dates
问题
我需要验证两个参数,如下所示。验证应该如下所示:
startDate - endDate < 30 天
startDate: Joi.date().default(new Date()),
endDate: Joi.date().default(new Date()),
当我这样做时,我遇到了一个错误。
Joi.object({
startDate: Joi.date().default(new Date()),
endDate: Joi.date().less(Joi.ref('startDate') + 50000).default(new Date()),
})
// 错误 - AssertError: 日期必须具有有效的日期格式或引用
我正在尝试对两个日期参数进行验证。
英文:
I need to validate 2 parameters, as you see below. Validation should be like this:
startDate - endDate < 30 days
startDate: Joi.date().default(new Date()),
endDate: Joi.date().default(new Date()),
And when I do like that, I am getting an error.
Joi.object({
startDate: Joi.date().default(new Date()),
endDate: Joi.date().less(Joi.ref('startDate') + 50000).default(new Date()),
})
// error - AssertError: date must have a valid date format or reference
I am trying to add validation to 2 date parameters.
答案1
得分: 2
你需要使用 Joi.ref 的 adjust
选项,以及 js 日期的 getTime()
。
adjust 允许在进行验证之前操作引用的值(startDate)。
getTime 返回日期的毫秒数,因此我们可以将毫秒数添加到它。
const t = Joi.object({
startDate: Joi.date().default(new Date()),
endDate: Joi.date()
.less(
Joi.ref("startDate", {
adjust: (v) => v.getTime() + (29 * 24 * 60 * 60 * 1000),
})
)
.default(new Date()),
});
英文:
You need to use Joi.ref's adjust
option along with js date's getTime()
adjust allows to manipulate referenced value (startDate) before doing the validation.
getTime returns the date in milliseconds so we can add milliseconds to it.
const t = Joi.object({
startDate: Joi.date().default(new Date()),
endDate: Joi.date()
.less(
Joi.ref("startDate", {
adjust: (v) => v.getTime() + (29 * 24 * 60 * 60 * 1000),
})
)
.default(new Date()),
});
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论