首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >尝试在moment.js中转换RFC2822日期时出现“弃用警告:时刻构造回落到js日期”

尝试在moment.js中转换RFC2822日期时出现“弃用警告:时刻构造回落到js日期”
EN

Stack Overflow用户
提问于 2014-04-24 16:13:14
回答 7查看 97.1K关注 0票数 172

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

代码语言:javascript
复制
 moment(moment('Wed, 23 Apr 2014 09:54:51 +0000').format('lll')).fromNow()

但我得到的是:

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

看起来我摆脱不了它!我怎么才能修复它?

EN

回答 7

Stack Overflow用户

回答已采纳

发布于 2014-04-30 06:23:56

要消除警告,您需要执行以下任一操作:

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

在您现在拥有的字符串中输入moment('2014-04-23T09:54:51');

  • Pass,但告诉Moment字符串的格式:

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

  • Convert到JavaScript Date对象,然后将其传递给Moment:

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

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

票数 327
EN

Stack Overflow用户

发布于 2017-09-26 01:23:20

或者,您可以通过设置moment.suppressDeprecationWarnings = true;来禁止显示弃用警告

票数 59
EN

Stack Overflow用户

发布于 2018-07-18 03:07:16

moment中的日期构造在内部使用javascript中的new Date()。在所有浏览器中,new Date()构造都可以识别或格式的日期字符串。当构造日期不是这些格式的moment对象时,将抛出弃用警告。

虽然抛出了弃用警告,但对于某些格式,moment对象将在Chrome中成功构建,但在Firefox或Safari中不会。因此,在Chrome中处理日期可能会得到预期的结果(不是所有时间),并在其他浏览器中抛出Invalid Date

考虑一下,02.02.2018

Chrome - moment("02.02.2018")._d -> Fri Feb 02 2018 00:00:00 GMT+0530 (India Standard Time)

火狐- moment("02.02.2018")._d -> Invalid Date

Safari - moment("02.02.2018")._d -> Invalid Date

因此,如果未使用推荐/标准格式,则使用moment.js的风险自负。

用于抑制弃用警告的

根据@Joe Wilson在上一个答案中提出的

  1. ,给出moment construction.

上的日期格式

示例:moment("02.05.2018", "DD.MM.YYYY").format("DD MM YYYY");

  1. 提供ISO或RFC2822格式的日期。

示例:moment("2018-02-01T18:30:00.000Z") - ISO格式

moment("Thu, 01 Feb 2018 18:30:00 GMT") - RFC2822格式- Format in Github

  1. 正如@niutech在前面的回答中所建议的,设置

moment.suppressDeprecationWarnings = true;

  1. 我建议在瞬间覆盖输入回退。

配置( moment.createFromInputFallback=function ){ config._d =新日期(config._i);}

因为(3)将抑制所有警告,(4)将仅抑制日期构造回退。使用(4),你将得到Invalid Date,因为使用了内部的new Date(),并且在控制台中可以看到其他弃用的方法,所以可以在应用程序中升级moment或替换弃用的方法。

票数 10
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23263380

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档