“弃用警告:时刻构造回退到js Date”,当尝试瞬间转换RFC2822日期时.js

2022-08-30 02:00:17

我使用以下代码将服务器端日期时间转换为使用 moment.js 的本地时间。

 moment(moment('Wed, 23 Apr 2014 09:54:51 +0000').format('lll')).fromNow()

但我得到:

弃用警告:时刻构造回退到 js Date。这是不鼓励的,并将在即将推出的主要版本中删除。有关详细信息,请参阅 https://github.com/moment/moment/issues/1407

看来我无法摆脱它!我该如何修复它?


答案 1

要摆脱警告,您需要:

  • 传入 ISO 格式版本的日期字符串:

    moment('2014-04-23T09:54:51');

  • 传入您现在拥有的字符串,但告诉 Moment 字符串的格式:

    moment('Wed, 23 Apr 2014 09:54:51 +0000', 'ddd, DD MMM YYYY HH:mm:ss ZZ');

  • 将字符串转换为 JavaScript Date 对象,然后将其传递到 Moment 中:

    moment(new Date('Wed, 23 Apr 2014 09:54:51 +0000'));

最后一个选项是 Moment 目前支持的内置回退,带有已弃用的控制台警告。他们说他们不会在未来的版本中支持这种回退。他们解释说,使用太不可预测了。new Date('my date')


答案 2

或者,您可以通过设置moment.suppressDeprecationWarnings = true;