【问题标题】:moment js diff function is failing in firefox and safari, but works fine in chromemoment js diff 函数在 firefox 和 safari 中失败,但在 chrome 中工作正常
【发布时间】:2018-05-19 19:10:24
【问题描述】:

我正在使用 moment.js diff 函数来计算两个日期之间的天数差。它在 chrome 中运行良好,但在 Firefox 和 safari 中返回 NaN。

const month = 05;
const day = 05;
const year = 1987;
const date = new Date(year, month, day);
const dob = moment(date).format('MM-DD-YYYY');
const diff = moment().diff(dob, 'days', true);

diff 的值在 chrome 中是正确的,但在 firefox 和 safari 中返回 NaN。

有什么帮助吗?

【问题讨论】:

  • 您使用的日期可能无效,例如 2007-02-30。这发生在我身上。

标签: javascript momentjs


【解决方案1】:

Chrome 在日期方面更容易使用分隔符,因此用破折号格式化日期适用于 Chrome,但不适用于 Firefox。

尝试使用以下方法:

const dob = moment(date).format('MM/DD/YYYY');

在 Firefox 中运行您的代码,您应该会收到一条警告,指出您使用的日期格式不是 RFC2822 或 ISO 格式,并且 momentjs 回退到使用 vanilla Date() 函数,该函数在不同浏览器中给出不同的结果。

【讨论】:

    【解决方案2】:

    问题在于格式。以下修复对我有用。

    const dob = moment(date).format('YYYY-MM-DD');

    (或)

    您可以将数组传递给 diff 函数,如下所示

    moment().diff(moment([year, month, day]), 'days', true);

    diff 函数期望格式为 YYYY-MM-DD 或 YYYY/MM/DD。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-09-15
      • 2012-02-05
      • 2013-10-29
      • 1970-01-01
      • 1970-01-01
      • 2013-12-27
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多