Tengo una fecha que regresa en este formato 2021-12-03T00:00:00.000Z que luego convierto en una cadena de fecha ISO y luego construyo una new Date() basada en la cadena ISO dividida. El problema es que mi fecha se formatea correctamente con todos los meses excepto diciembre. Cada vez que paso una fecha de diciembre, la lógica siempre la convierte en enero del próximo año.
Código
//bill.date_paid at this point = '2021-12-03T00:00:00.000Z' let isoDateString = new Date(bill.date_paid).toISOString().split('T')[0].split('-'); //isoDateString = ['2021', '12', '03']; bill.date_paid = new Date(isoDateString[0], isoDateString[1], isoDateString[2]).getTime(); //date conversion above = 1641193200000 which is equal to a January date...¿Pero por qué?
Para convertir su fecha iso al formato mm/dd/yyyy, puede usar un objeto Intl.DateTimeFormat como el siguiente:
const date = new Date('2021-12-03T00:00:00.000Z'); const result = new Intl.DateTimeFormat('en-US').format(date); console.log(result);¿Por qué no lo conviertes directamente a tiempo?
let date_paid = '2021-12-03T00:00:00.000Z' let date = new Date(date_paid).getTime() console.log(date)Puedes probar esto
date = new Date('2021-12-03T00:00:00.000Z'); console.log((date.getMonth()+1)+'/'+(date.getDate()) + '/'+date.getFullYear());También puedes usar moment.js
console.log(moment(new Date('2021-12-03T00:00:00.000Z')).format("MM/DD/YYYY")) <script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.29.1/moment.min.js"></script>