现在数据中的moment.js错误

时间:2018-03-16 19:00:39

标签: javascript momentjs

我有这段代码:



var utc = moment.tz(1521221491000, "UTC");
var local = utc.clone().tz(moment.tz.guess());
console.log(moment([2018, 03, 15]).fromNow());
console.log('moment() piece by piece: ' + moment().get('year') + ' ' + moment().get('month') + ' ' + moment().get('date') + '. Data inside of momment:  ' + moment().format());
console.log(local.format("YYYY-MM-DD HH:MM:SS"));

<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.21.0/moment.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment-timezone/0.5.14/moment-timezone-with-data.js"></script>
&#13;
&#13;
&#13;

在第3行

  

console.log(时刻([2018,03,15])。fromNow());

假设说&#39; 1天前&#39;,目前写这个问题的时间是2018年3月16日......并且由于某种原因,回复是

  

一个月......

知道为什么会出现这个错误,错误发生在月份变种中

3 个答案:

答案 0 :(得分:1)

Moment使用与JavaScript Date对象相同(烦人)的日期系统,其中January = 0,February = 1等。所以3表示4月,也就是从现在开始的一个月。

答案 1 :(得分:1)

如片刻documentation所示,在解析数组作为参数时,片刻镜像本机javascript Date对象基于0的索引数月。所以3,令人困惑的是,四月。

我个人觉得让时刻解析预先格式化的字符串或对象要容易得多,不过你的里程可能会有所不同。

答案 2 :(得分:-1)

就像Gnagy在这个帖子中所回答的那样(https://stackoverflow.com/a/20094956/8733102),

根据documentation,月数为零索引。所以1月是0,12月是11。