日期范围验证-在jquense / yup中,开始日期不得与结束日期相同

问题描述

我正在使用Yup在reactjs中进行表单验证。我的表单有两个日期,startDateendDate。我已成功实施范围验证。但在我的场景中,startDate必须比endDate更好(不应相等)。但是下面的架构仅检查endDate小于方案的情况。接受相同日期的地方。请帮忙。

我正在使用的模式是:

schema = Yup.object().shape({
    startDate: Yup.date().min(new Date(),'Please choose future date').typeError('Start Date is required'),endDate: Yup.date().min(Yup.ref('startDate'),'End date must be grater than start date').typeError('End Date is required'),});

解决方法

我知道为时已晚,但我正在发布此答案,如果有帮助,我找到了此解决方案:

    schema = Yup.object().shape({ 
          startDate: yup
            .date()
            .required("Start Date is Required"),endDate: yup
            .date()
            .min(
              yup.ref("startDate"),"End date must be grater than start date"
            )
            .test({
              name: "same",exclusive: false,params: {},message: "End date must be grater than start date",test: function(value) {
                const startDate = moment(this.parent.startDate).format("YYYY-MM-DD")
                const endDate = moment(value).format("YYYY-MM-DD")
                return !moment(startDate).isSame(moment(endDate))
              },}),});

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...