Solo quiero validar si la cadena que recibí es una fecha válida usando date-fns. Voy a recibir una fecha como esta '29/10/1989', fecha BR. Quiero transformarlo en 29-10-1989 y verificar si es válido. ¿Alguien puede ayudarme con esto?
const parsedDate = parseISO('29/10/1989')este código anterior no funciona, obtuve 'Fecha no válida'
Intente parse con opciones de locale como esta:
import { parse, isValid, format } from 'date-fns'; import { enGB } from 'date-fns/locale'; const parsedDate = parse('29/10/1989', 'P', new Date(), { locale: enGB }); const isValidDate = isValid(parsedDate); const formattedDate = format(parsedDate, 'dd-MM-yyyy');Se me ocurrió esto (basado en la respuesta de Anatoly):
import { parse, isValid, format } from 'date-fns'; import { enGB } from 'date-fns/locale'; function isValidDate(day, month, year) { const parsed = parse(`${day}/${month}/${year}`, 'P', new Date(), { locale: enGB }) return isValid(parsed) } console.log(isValidDate('31', '04', '2021')); // invalid: april has only 30 days console.log(isValidDate('30', '04', '2021')); // valid