弃用警告:施工时间回落到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'}}