【问题标题】:Moment JS seemingly returning random dateMoment JS 看似返回随机日期
【发布时间】:2020-06-18 15:24:36
【问题描述】:

Moment JS 正在返回一个随机日期。

我正在尝试在 react-native 项目中创建日历。我创建了这个循环来倒数从今天开始的天数。我已经连接了我的控制台,并试图清楚地展示我是如何尝试调试的。

减法似乎无法识别循环,并且 i 值似乎停留在 16。

任何帮助将不胜感激。 This is the code that is causing all the fussThis is the output in the console

【问题讨论】:

  • 将来,将代码本身添加到答案中,而不是图像链接。这使答案更加独立,对读者来说更容易。

标签: react-native momentjs


【解决方案1】:

Per Moment.js,时刻是可变的。克隆执行日期数学之前的时刻

https://momentjs.com/guides/#/lib-concepts/mutability/

在执行 .add()、.subtract() 等操作时,您需要创建一个新的时刻实例或克隆现有的实例。

const moment = require("moment");

const today = moment();

// count back N days
const N = 3;
let i = 1;
let days = [];


// #1 - Create a new moment instance from today and add -i days
while (i <= N) {
  const day = moment(today).add(-i, "days");
  days.push(day);
  i++;
}

console.log("Approach #1");
console.log({ days });

// #2 - A moment is mutable. So we use add() to mutate today by -1 days each iteration, clone the instance, and push to array
i = 0;
days = [];
while (i < N) {
  const day = today.add(-1, "days").clone();
  days.push(day);
  i++;
}

console.log("Approach #2");
console.log({ days });

【讨论】:

  • 非常感谢。我现在已经将 lastDate.date 传递给了 moment() 并且它很有效。这很有帮助。现在将阅读更多关于可变性的内容。
  • 很高兴它成功了!请选择此作为您问题的答案。
猜你喜欢
  • 2018-02-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-01-13
  • 2020-08-19
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多