时刻.js现在数据错误



我有这个代码:

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>

在第 3 行

console.log(moment([2018, 03, 15](.fromNow(((;

假设说"1天前",目前写这个问题是2018年3月16日......出于某种原因,响应是

一个月后...

知道为什么会出现此错误,错误是在月份变量中。

如 moment

文档中所述,当解析数组作为参数时,moment 会镜像本机 javascript Date 对象几个月的从 0 开始的索引。所以 3 令人困惑的是,四月。

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

Moment 使用与 JavaScript Date 对象相同的(烦人的(日期系统,其中 January = 0,February = 1,依此类推。所以 3 表示四月,也就是一个月后。

就像 Gnagy 在这个线程中回答的那样 (https://stackoverflow.com/a/20094956/8733102(,

根据文档,月份的索引为零。所以 1 月是 0,12 月是 11。

最新更新