Estoy en node.js editando un archivo del lado del servidor y quiero obtener la fecha en formato español mexicano como este:
const bdate = new Date(1980, 4-1, 3); const birthdate = bdate.toLocaleString('es-MX', { month: 'short', year : 'numeric', day : 'numeric' }); console.log(birthdate); pero esto produce el Apr 3, 1980 cuando debería ser: 3-abr-1980
Este código funciona bien en un archivo del lado del cliente pero no aquí. ¿Que esta mal aquí?
Gracias.
Puede lograr el formato de fecha que desee con solo el idioma "es" en lugar de "es-MX" y luego simplemente sustituir los espacios por - . Otra solución se basaría en esta respuesta , puede lograr el mismo resultado con Intl.DateTimeFormat
He proporcionado algunos ejemplos aquí:
const bdate = new Date(1980, 4-1, 3); const birthdate = bdate.toLocaleString('es', { month: 'short', year : 'numeric', day : 'numeric' }).replaceAll(" ", "-"); console.log(birthdate) function join(t, a, s) { function format(m) { let f = new Intl.DateTimeFormat('es', m); return f.format(t); } return a.map(format).join(s); } let a = [{day: 'numeric'}, {month: 'short'}, {year: 'numeric'}]; let s = join(bdate, a, '-'); console.log(s); let ye = new Intl.DateTimeFormat('es', { year: 'numeric' }).format(bdate); let mo = new Intl.DateTimeFormat('es', { month: 'short' }).format(bdate); let da = new Intl.DateTimeFormat('es', { day: 'numeric' }).format(bdate); console.log(`${da}-${mo}-${ye}`);