弃用警告:施工时间回落到jsdate

我正在使用下面的代码来使用Moment.js将服务器端date时间转换为本地时间

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

但是我得到:

弃用警告:施工时间回落到jsdate。 这是沮丧,将在即将到来的主要版本中被删除。 有关更多信息,请参阅https://github.com/moment/moment/issues/1407 。

看来我无法摆脱它! 我该如何解决?

要摆脱警告,您需要:

  • 传入datestring的ISO格式的版本:

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

  • 传入你现在的string,但是告诉Momentstring在什么格式:

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

  • 将您的string转换为JavaScript Date对象,然后将其传递到Moment:

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

最后一个选项是Moment现在支持的内置回退,带有不推荐使用的控制台警告。 他们表示在未来的版本中他们不会支持这个后备。 他们解释说,使用new Date('my date')太难以预料。

作为替代,您可以通过设置moment.suppressDeprecationWarnings = true;来禁止显示弃用警告moment.suppressDeprecationWarnings = true;

如果你的date是从一个API传递给你的string (就像我的问题),你可以使用一个filter将string转换为一个date。 这将照顾当下施工警告。

 $scope.apiDate = 10/29/2017 18:28:03"; angular.module('myApp').filter('stringToDate', function() { return function(value) { return Date.parse(value); }; }); 

将它添加到视图中:

 {{apiDate | stringToDate | amDateFormat:'ddd, MMM DD'}}