Vue中使用的Momentjs显示UTC时间,但预计当地时间

时间:2017-09-01 09:11:58

标签: javascript vue.js momentjs

momentjs文档说:'默认情况下,片刻会在当地时间内解析并显示。 (https://momentjs.com/docs/#/parsing/utc/)。

如果我直接通过javascript显示moment()的输出,那确实就是这样:

<div id="divLocal">
</div>    
document.getElementById("divLocal").innerHTML = moment();
  

输出:Fri Sep 01 2017 10:56:45 GMT + 0200

如果我使用Vuejs做同样的事情,它会显示UTC时间:

<div id='app'>
  <span>{{datenow}}</span>
</div>
new Vue({
  el: '#app',
  data: {
    datenow: ''
  },
  methods: {
    time() {
      var self = this;
      this.datenow = moment();
    },
  },
  mounted: function() {
    this.time();
  }
});
  

输出:2017-09-01T09:02:38.169Z

示例:https://jsfiddle.net/nv00k80c/1/

有人知道为什么会这样吗?如果我在Vue中使用moment()。format(),输出也是正确的。但我想知道在哪里以及为什么存在差异?

1 个答案:

答案 0 :(得分:2)

当浏览器调用.toJSON()

时,Vue会调用toString()

正如@Vincenzo在对您的OP的评论中所说,在将其传递给模板之前,您应该始终格式化为字符串。