Actualmente, tengo un esquema sí para asegurarme de que end_time sea al menos posterior a start_time
start_time: yup .date() .min(new Date(), 'Start datetime cannot be in the past') .required('Start datetime is required'), end_time: yup .date() .min(yup.ref('start_time'), 'End datetime must be after start datetime') .required('End datetime is required'), Quiero hacerlo de modo que end_time sea como máximo 1 día/24 horas después de start_time. Por ejemplo, si start_time es "Mon Apr 11 2022 18:30:00" , quiero que end_time sea como máximo "Tue Apr 12 2022 18:30:00" . Pensaría en usar .when() o .max() , pero no estoy seguro del formato de cómo comenzar.
Para cualquiera que se encuentre con un problema similar, he logrado resolver el problema usando el método .when() en el objeto Schema
start_time: yup .date() .min(new Date(), 'Start datetime cannot be in the past') .required('Start datetime is required'), end_time: yup .date() .when('start_time', (start_time, schema) => { if (start_time) { const currentDay = new Date(start_time.getTime()); const nextDay = new Date(start_time.getTime() + 86400000); return schema .min(currentDay, 'End time must be after start time') .max(nextDay, 'End time cannot be more than 24 hours after start time'); } else { return schema; } }) .required('End datetime is required'),