是的日期验证 - 开始日期不能与结束日期相同

Posted

技术标签:

【中文标题】是的日期验证 - 开始日期不能与结束日期相同【英文标题】:yup date validation - Start Date must not be same as end date 【发布时间】:2021-12-27 06:57:24 【问题描述】:

我目前被困在如何在同一日期使用 yup 进行验证。

目前我可以使用以下方法验证 endDate 是否在 startDate 之前:

schema = yup.object().shape(
  startDate: yup.date().min(new Date(),'Please choose future date'),
  endDate: yup
          .date()
          .min(
             yup.ref("startDate"),
             "End date has to be more than start date"
          ),
)

但它不会检查相同的日期。 我很清楚这个线程:Date range validation - Start Date must not be same as End Date in jquense / yup,但它还没有解决并且使用momentjs。我公司在这个项目中严格使用dayjs。

希望你能帮我解决使用 JS 或 dayjs 的问题。

谢谢!

【问题讨论】:

【参考方案1】:

你可以用这个:

schema = yup.object().shape(
  startDate: yup.date().min(new Date(),'Please choose future date'),    
  endDate: yup
              .date()    
              .when('startDate',
                            (startDate, schema) => 
                                if (startDate) 
                                const dayAfter = new Date(start_time.getTime() + 86400000);
                              
                                    return schema.min(dayAfter, 'End date has to be more than start date');
                                  
                              
                                  return schema;
                                
                            ),
)

【讨论】:

以上是关于是的日期验证 - 开始日期不能与结束日期相同的主要内容,如果未能解决你的问题,请参考以下文章

js验证开始日期不能大于结束日期?

验证 php 文件中的开始日期和结束日期时出错

在php文件中验证开始日期和结束日期时出错

为 2 Datepicker 开始日期和结束日期设置验证 javascript

Angular 2表单验证开始日期<=结束日期

验证结束日期是不是大于开始日期