xxxxxxxxxx
// Yup validation for end date and time
validationSchema: Yup.object({
end_date: Yup.date()
.min(new Date(state.start_date), intl.formatMessage({ id: 'end_date.error.min' }))
.max(new Date(), intl.formatMessage({ id: 'end_date.error.max' }))
.required(),
end_time: Yup.string()
.required(intl.formatMessage({ id: 'end_time.error.required' }))
.test('min_end_time', intl.formatMessage({ id: 'end_time.error.min_time' }), function (value) {
const { end_date } = this.parent
if (state.start_date === moment(end_date).format('ddd MMM DD YYYY')) {
return moment(value, 'HH:mm').isSameOrAfter(moment(state.start_time, 'HH:mm').add(1, 'hours'))
} else {
return true
}
}),
})
xxxxxxxxxx
import * as yup from 'yup';
import { parseISO, isAfter } from 'date-fns';
const schema = yup.object().shape({
date: yup
.date()
.max(new Date(), 'Date must be in the past')
.transform((value, originalValue) => {
if (originalValue) {
const parsedDate = parseISO(originalValue);
if (isAfter(parsedDate, new Date())) {
return new Date(); // Replace with desired behavior, e.g. throw error or set default
}
}
return value;
}),
});
// Example usage
const data = { date: '2022-08-01' };
schema.validate(data)
.then(validatedData => {
console.log(validatedData);
})
.catch(error => {
console.log(error.message);
});