Actualmente estoy atascado en cómo hacer la validación con yup para la misma fecha.
Actualmente puedo validar si endDate no es anterior a startDate usando:
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" ), })Pero no está comprobando la misma fecha. Soy muy consciente de este hilo: Validación del rango de fechas: la fecha de inicio no debe ser la misma que la fecha de finalización en jquense / yup , pero aún no se ha resuelto y se usa momentjs. Mi empresa utiliza estrictamente dayjs para este proyecto.
Espero que me puedan ayudar con la solución usando JS o dayjs.
Gracias !
Puedes usar esto:
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(startDate.getTime() + 86400000); return schema.min(dayAfter, 'End date has to be after than start date'); } return schema; }), })Aquí hay una solución que funcionó para mí.
const validationSchema = Yup.object({ startDate: Yup.date().required(), endDate: Yup.date().test( "same_dates_test", "Start and end dates must not be equal.", function (value) { const { startDate } = this.parent; return value.getTime() !== startDate.getTime(); } ), });