【问题标题】:moment.js error in data now现在数据中的 moment.js 错误
【发布时间】:2018-03-16 19:00:39
【问题描述】:

我有这个代码:

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 日......由于某种原因,回复是

一个月...

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

【问题讨论】:

标签: javascript momentjs


【解决方案1】:

正如moment 的documentation 中所指出的,当解析一个数组作为参数时,moment 反映了本机javascript Date 对象的基于0 的索引数月。因此,令人困惑的是,3 是四月。

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

【讨论】:

    【解决方案2】:

    Moment 使用与 JavaScript Date 对象相同(烦人的)日期系统,其中一月 = 0、二月 = 1 等。所以 3 表示四月,即距离现在一个月。

    【讨论】:

      【解决方案3】:

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

      根据documentation,月份是零索引的。所以一月是 0,十二月是 11。

      【讨论】:

      • 我们不会发布带有指向另一个答案的链接的答案,我们会投票/标记以关闭为重复项...如果您没有这样做的权限,请继续提问可以给出正确的答案。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-11-17
      • 1970-01-01
      • 1970-01-01
      • 2013-11-08
      • 1970-01-01
      相关资源
      最近更新 更多