parse date-fns返回前一天的值



我第一次尝试使用date-fns库解析日期(我删除了moments .js,我将在我的项目中引入date-fns),但是,当我使用解析函数时,我得到前一天的结果。我读过这个话题

date-fns中的解析函数返回前一天的值

这个问题是由于时区,但我无法解决我的问题,因为我收到的日期格式为&;yyyymmdd &;。这是我的代码

var start ="20210119";
var stop ="20210130";
const dateFrom = parse(start, "yyyyMMdd", new Date());
console.log("date form",dateFrom);

我的控制台日志输出是:20121-01-18 t23:00:00 .000 z

您的dateFrom日期实际上是正确的,假设您希望它是当地时间。

它在控制台输出中提前一个小时显示的原因是因为它以UTC时间显示(因此最后的'Z'表示Zulu)。我假设你们的当地时间在一月份比UTC早一小时。

我们可以使用Date.toLocaleString()来输出UTC或本地时间。

如果我们以本地时间输出,我们看到日期实际上是正确的(2021-01-19 00:00:00),如果我们以UTC输出(将timeZone设置为'UTC'),我们看到它早了一个小时(如您的控制台输出)。

我们也可以使用Date.getFullYear(),Date.getMonth()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>

相关内容

  • 没有找到相关文章

最新更新