【问题标题】:How to fix moment.js in reactjs?如何在 reactjs 中修复 moment.js?
【发布时间】:2019-02-07 02:41:05
【问题描述】:

我正在使用 moment.js 并收到此错误:

弃用警告:提供的值不在公认的 RFC2822 中或 ISO 格式。时刻构造回退到 js Date(),这不是 在所有浏览器和版本中都可靠。非 RFC2822/ISO 日期 格式不鼓励,将在即将到来的专业中删除 释放。请参阅 http://momentjs.com/guides/#/warnings/js-date/ 了解更多信息。 参数:[0] _isAMomentObject:真,_isUTC:假,_useU

在我的反应组件中,我有:

const sortTasks = (first, second) => moment(first.endDate).diff(second.endDate);

first.enddate=‘2018 年 12 月 20 日’

如何避免控制台中出现此警告?

【问题讨论】:

  • 将 .toISOString() 添加到末尾

标签: reactjs momentjs


【解决方案1】:

另一种方法是通过向 moment 函数提供第二个参数来告知 moment.js 使用的日期格式。

“2018 年 12 月 20 日”的格式为 DD MMM YYYY”。 如果两个日期的格式相同,则应该写

const sortTasks = (first, second) => 
    moment(first.endDate, "DD MMM YYYY").diff(moment(second.endDate, "DD MMM YYYY"));

请注意,另一个日期也显式转换为时刻,因为它以非标准格式表示。

您可以在the moment.js documentation about parsing查看详情。


如果您想找出以天表示的差异,或者以例如年/月/日,您可以使用moment.duration。检查the moment.js documentation about this feature

例如要获得两个日期之间的年数、月数和天数,比如date1date2,我们可以进行如下操作(假设date1date2 之前):

const theDuration = moment.duration(date2, date1);
const yearsElapsed = theDuration.years();
const monthsElapsed = theDuration.months();
const daysElapsed = theDuration.days();


希望它有所帮助 - 卡洛斯

【讨论】:

  • 很高兴它确实有帮助
猜你喜欢
  • 1970-01-01
  • 2016-10-25
  • 1970-01-01
  • 2021-08-01
  • 2017-02-12
  • 1970-01-01
  • 1970-01-01
  • 2019-12-27
  • 2016-08-25
相关资源
最近更新 更多