Hasta ahora, mi código verifica si la fecha es válida o no, pero no sé cómo obtener el nombre del día para la fecha que ingresé en el campo de entrada. Por ejemplo: si pongo 01/12/1994, debería imprimirse el miércoles
function isValidDate(inputDate) { if (!/^\d{1,2}\/\d{1,2}\/\d{4}$/.test(inputDate)) return false; var parts = inputDate.split('/'); //12 01 1994 var day = parseInt(parts[0], 10); var month = parseInt(parts[1], 10); var year = parseInt(parts[2], 10); if (year < 1000 || year > 3000 || month == 0 || month > 12) return false; var monthLength = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]; if (year % 400 == 0 || (year % 100 != 0 && year % 4 == 0)) monthLength[1] = 29; return day > 0 && day <= monthLength[month - 1]; } class Inputdate extends React.Component { state = { inputDate: '', day: '', }; render() { console.log(this.state); return ( <div> <input name="date" type="text" value={this.state.value} placeholder="dd-mm-yyyy" onChange={(e) => { if (isValidDate(e.target.value)) { this.setState({ inputDate: e.target.value }); } else { this.setState({ inputDate: 'invalid date' }); } }} /> <p>{this.state.inputDate}</p> </div> ); } }const event = new Date(Date.UTC(2012, 11, 20, 3, 0, 0)); const options = { weekday: 'long', year: 'numeric', month: 'long', day: 'numeric' }; var date = event.toLocaleDateString(undefined, options) var day = date.split(',')[0] // This will show you the day name. console.log(day)Creo que es una mejor práctica usar toLocaleString cuando trabaja con fechas en javscript, por ejemplo, si intenta usar una matriz donde tiene días de la semana y obtiene la cadena específica de eso por su formato de fecha es malo, porque en IOS usted quedará undefined porque "01/12/1994" no es un formato compatible con ECMA-262, por lo que la implementación del análisis dependerá y iOS lo tratará como una fecha no válida.
const getWeekday = (dateFormat) => { // split date in non-digit chaarcters let [d, m, y] = dateFormat.split(/\D/); //put them in Date method const date = new Date(y, m - 1, d) //and return weekday in long format const weekday = date.toLocaleString("default", { weekday: "long" }) return weekday } console.log(getWeekday('12/01/1994'))Esto debería funcionar:
let d = new Date("12/01/1994") const weekday = ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"] let day = weekday[d.getDay()]; console.log(day)