是的日期验证,开始日期之后的结束日期
Posted
技术标签:
【中文标题】是的日期验证,开始日期之后的结束日期【英文标题】:Yup date validation, End date after start date 【发布时间】:2022-01-06 07:28:22 【问题描述】:这是我的代码,我试图强制两个日期字段始终不同,结束日期必须至少比开始日期晚 1 天。
const EditSchema = Yup.object().shape(
StartDate: Yup.date()
.transform(value => (isDate(value) ? undefined : value))
.typeError('Enter a start date')
.required('Enter a start date'),
EndDate: Yup.date()
.min(Yup.ref('StartDate'), 'End date must be after start date')
.transform(value => (isDate(value) ? undefined : value))
.typeError('Enter an end date')
.required('Enter an end date')
);
【问题讨论】:
我认为您需要禁用之前选择的日期。 如果您分享您的表格,它可能会对人们有所帮助 【参考方案1】:数小时后试图弄清楚该怎么做。
这是代码。
当您有一个日期选择器并选择一个日期时,它将类似于“01/01/2021 00:00:00”。
因此,如果您需要结束日期至少比开始日期晚 1 天,则必须在开始日期上增加 1 小时,这样您就不能放置 2 个相等的日期。
StartDate: Yup.date()
.transform(value => (isDate(value) ? undefined : value))
.typeError('Enter a date')
.required('Enter a date')
),
EndDate: Yup.date()
.min(Yup.ref('StartDate'), 'End date must be after start date')
.when('StartDate', (st, schema) =>
if(st != null)
st.setHours(st.getHours() + 1);
return schema.min(st)
//this else prevents your page from crashing if there's any other input
else
return schema.min('1900-01-01')
)
.transform(value => (isDate(value) ? undefined : value))
.typeError('Enter a date')
.required('Enter a date')
);
【讨论】:
正如目前所写,您的答案尚不清楚。请edit 添加其他详细信息,以帮助其他人了解这如何解决所提出的问题。你可以找到更多关于如何写好答案的信息in the help center。以上是关于是的日期验证,开始日期之后的结束日期的主要内容,如果未能解决你的问题,请参考以下文章