首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >parse date-fns返回前一天的值

parse date-fns返回前一天的值
EN

Stack Overflow用户
提问于 2021-09-13 09:05:34
回答 1查看 716关注 0票数 1

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

parse function in date-fns returns one day previous value

这个问题是由时区引起的,但我无法修复我的问题,因为我收到的日期格式为"yyyyMMdd“。这是我的代码

代码语言:javascript
复制
var start ="20210119";
var stop ="20210130";

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

我的控制台日志输出是: 2021-01-18T23:00:00.000Z

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-09-13 10:06:15

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

它在你的控制台输出中提前一个小时显示的原因是因为它是以UTC时间显示的(因此在末尾的Z代表祖鲁语)。我想你们当地的时间比世界协调时早一个小时。

我们可以使用Date.toLocaleString()输出协调世界时或本地时间的时间。

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

我们还可以使用Date.getFullYear()Date.getMonth()Date.getDate()输出本地日期。

代码语言:javascript
复制
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()}`);
代码语言:javascript
复制
<script src="https://cdnjs.cloudflare.com/ajax/libs/date-fns/1.28.5/date_fns.min.js"></script>

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69160033

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档