Código:
const date = new Date(2020, 05, 10) const options = { year: 'numeric', month: 'long', day: 'numeric' } const formattedDate = date.toLocaleDateString('en', options); console.log(formattedDate);¿Por qué la salida es el 10 de junio de 2020? Revisé la documentación pero no entendí. ¿Podría alguien ayudarme a entender lo que está sucediendo en el código anterior?
Esto tiene más que ver con el constructor Date() .
Hay múltiples formatos para pasar la fecha al constructor. Cuando se usa el formato de valores de componentes de fecha y hora individuales, el segundo parámetro es monthIndex . Por eso 5 - corresponde a junio, y para mayo tendrás que usar 4.
De los documentos:
Valor entero que representa el mes, desde 0 para enero hasta 11 para diciembre. Si se pasa un valor mayor a 11, entonces esos meses se agregarán a la fecha; por ejemplo, new Date(1990, 12, 1) devolverá el 1 de enero de 1991
Como puede ver, esto no tiene nada que ver con sus opciones. El mes es junio incluso antes de eso.
const date = new Date(2020, 05, 10) console.log(date); const formattedDate = date.toLocaleDateString('en', options); console.log(formattedDate);Nota: Es posible que vea un día diferente, dependiendo, pero eso se debe a que la fecha devuelta inicialmente es independiente de la plataforma . Entonces se muestra basado en GMT.
Aquí options = { year: 'numeric', month: 'long', day: 'numeric'} mes está configurado como month: long , por lo que mostrará June , short mostrará Jun , pero si pasa numeric por un mes en options resultará interesante mes como 6 , y dado que el mes comienza de 0-11 y dado que pasó 5 como mes en el constructor de Fecha, generará junio como un mes.