Estoy tratando de obtener el último día del mes anterior usando la fecha actual:
var myDate = new Date();Según MDN :
si se proporciona 0 para dayValue, la fecha se establecerá en el último día del mes anterior.
Pero cuando se establece la fecha en cero:
myDate.setDate(0) console.log(JSON.stringify(myDate));Obtengo "2021-08-01T01:18:34.021Z" cuyo primer día del mes actual. ¿Qué tiene de malo este enfoque?
JSON.stringify() está serializando la marca de tiempo con una zona horaria Z , lo que indica UTC. La diferencia entre UTC y su zona horaria local hace que la fecha se traslade al día siguiente.
Puede usar toLocaleString() para imprimir la fecha en su zona horaria local:
var myDate = new Date(); myDate.setDate(0); console.log(myDate.toLocaleString());dateInstance.toString() o dateInstance.toLocaleString() :
const myDate = new Date; myDate.setDate(0); myDate.setHours(0, 0, 0, 0); console.log(myDate.toString()); console.log(myDate.toLocaleString());Puedes usar el paquete date-fns
var df = require("date-fns") let myDate = new Date() //Thu Aug 05 2021 22:16:09 let lastDayOfPrevMonth = df.endOfMonth(df.subMonths(myDate, 1)) //Sat Jul 31 2021 23:59:59 GMT-0400