Your dateFrom date is actually correct, assuming you want it in your local time.
The reason it's showing an hour earlier in your console output is because it is being displayed in UTC time (hence the 'Z' for Zulu at the end). I assume your local time is one hour ahead of UTC in January.
We can use Date.toLocaleString() to output the time in either UTC or local time.
If we output in local time, we see the date is actually correct (2021-01-19 00:00:00), and if we output in UTC (set the timeZone to 'UTC') we see it is one hour earlier (as in your console output).
We can also output the local date using Date.getFullYear(), Date.getMonth() and 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>