【问题标题】:Converting moment.js to JSON shows incorrect time将 moment.js 转换为 JSON 显示时间不正确
【发布时间】:2020-09-01 13:16:51
【问题描述】:

我有一个方法可以设置我的令牌的 created 属性,如下所示:

const token = new Token();
console.log(moment().toDate());
token.created = moment().toDate().toJSON();

有些事情我无法理解,这真的让我很困惑。

console.log(moment().toDate()); 行打印了Tue Sep 01 2020 14:11:39 GMT+0100,但是当我在调试器上检查属性created 时,尽管它使用相同的时刻对象和方法(除了调用toJSON()),它会产生一个落后一小时的日期时间像这样:2020-09-01T13:11:39.179Z

我将时刻日期作为字符串存储在 created 属性中,因为这将存储在 localStorage 中。

有人知道这是什么原因吗?

【问题讨论】:

  • 原因是你的第一个日期是GMT+1,第二个是GMT:en.wikipedia.org/wiki/Greenwich_Mean_Time
  • 您是否尝试过使用生成的字符串创建一个新的moment 实例?
  • 而不是这个:moment().toDate().toJSON(),调用这个:moment().toDate().toISOString() 或者只是通过:moment().toISOString() 将时刻日期格式化为 ISO 8601。
  • this question 可能对你有帮助。

标签: javascript vue.js momentjs


【解决方案1】:

时间是一样的。仔细看看。

一个将时区标记为 Z,另一个标记为 GMT+1。

这些时区相隔 1 小时。

你可以specify the time zone

【讨论】:

  • 为什么 toJSON 产生不同的时区?我试过 moment().utc()moment().utc().toJSON() 但两者都产生不同的值
  • @KTOV — 因为 toJSON 的规范说要转换它,所以时区是 Z。
猜你喜欢
  • 2019-09-07
  • 1970-01-01
  • 1970-01-01
  • 2015-08-27
  • 1970-01-01
  • 2016-11-21
  • 2015-05-20
  • 2016-06-07
相关资源
最近更新 更多