Estoy tratando de analizar la fecha usando la biblioteca date-fns por primera vez (eliminé moment.js e introduciré date-fns en mi proyecto) pero, cuando uso la función de análisis, obtengo un día anterior como resultado. leí en este tema
La función de análisis en date-fns devuelve el valor de un día anterior.
ese problema se debe a las zonas horarias, pero no pude solucionar mi problema porque recibo fechas en el formato "yyyyMMdd". este es mi codigo
var start ="20210119"; var stop ="20210130"; const dateFrom = parse(start, "yyyyMMdd", new Date()); console.log("date form",dateFrom);El resultado del registro de mi consola es: 2021-01-18T23:00:00.000Z
Su fecha dateFrom es realmente correcta, suponiendo que la desee en su hora local.
La razón por la que se muestra una hora antes en la salida de la consola es porque se muestra en hora UTC (de ahí la 'Z' de zulú al final). Supongo que su hora local está una hora por delante de UTC en enero.
Podemos usar Date.toLocaleString() para generar la hora en UTC o en hora local.
Si generamos la salida en hora local, vemos que la fecha es realmente correcta (2021-01-19 00:00:00), y si generamos la salida en UTC (establecemos la zona horaria en 'UTC') vemos que es una hora antes ( como en la salida de su consola).
También podemos generar la fecha local usando Date.getFullYear() , Date.getMonth() y Date.getDate() .
var start ="20210119"; var stop ="20210130"; const dateFrom = dateFns.parse(start, "yyyyMMdd", new Date()); console.log("Date from (is Date object):", dateFrom instanceof Date); console.log("\nDate from (console.log):",dateFrom); console.log("Date from (UTC):", dateFrom.toLocaleString([], { timeZone: 'UTC' })); console.log("\nDate from (Local):", dateFrom.toLocaleString()); console.log("Date from (Local):", dateFrom.toDateString()); console.log("Date from (Local):", `${dateFrom.getFullYear()}-${dateFrom.getMonth()+1}-${dateFrom.getDate()}`); <script src="https://cdnjs.cloudflare.com/ajax/libs/date-fns/1.28.5/date_fns.min.js"></script>