角度日期过滤器不使用毫秒(字符串或数字)

时间:2016-09-05 10:21:56

标签: javascript angularjs date angularjs-filter

我认为我有这样的事情:

{{1288323623006 | date:'%d/%m/%Y %I:%M:%S %p'}}

但它在我的控制台中抛出了一个错误,如下所示: enter image description here

当我将毫秒转换为控制器中的日期对象时,如下所示:

$scope.myDate = new Date(1288323623006);

在我看来:

{{myDate  | date:'%d/%m/%Y %I:%M:%S %p'}}

然后按预期显示29/10/2010 06:40:23 AM

以下是来自Angular Docs的示例,它会在我的控制台中抛出上述错误。

我可以将日期转换为对象并将其传递给视图,但我有兴趣以这种方式管理它,因为我不想使用这样的修复。

我的 I18nAdapter 中没有任何更改。

有人有过类似的问题吗?

3 个答案:

答案 0 :(得分:0)

因为您正在尝试解析非日期对象。您需要将过滤器传递给Date对象,就像在控制器中一样。你应该做点什么:

{{new Date(1288323623006) | date:'%d/%m/%Y %I:%M:%S %p'}}

答案 1 :(得分:0)

您可以制作自定义过滤器并将其与您的值一起使用,如下所示:

过滤器:

dashboard

HTML:

Class App\Http\Controllers\Dashboard\PlaceController

这将输出.filter('millisecondsToDate', function($filter) { return function(millseconds) { var timeString = $filter('date')(new Date(millseconds),'d/M/yyyy HH:mm:ss a'); return timeString; }; })

编辑:

实际上这也有效:

{{ 1288323623006 | millisecondsToDate }}

所以你的日期格式错了,这就是为什么Angular无法将其转换为日期。

请参阅documentation for AngularJS date了解正确的格式。

这是一个JSFiddle:https://jsfiddle.net/thepio/qrr451pk/

编辑2:

有了i18n,您是否尝试过以下操作?

29/10/2010 06:40:23 AM

或使用自定义格式:

{{ 1288323623006 | date: 'd/M/yyyy HH:mm:ss a' }}

答案 2 :(得分:0)

我最近解决了这个问题,现在我发布了我的解决方案。

事实证明,角度过滤器不起作用,因为使用了本地化过滤器。

我所做的是通过在i18n.js库中注释这些行来禁用本地化日期过滤器:

angular.module('app.filters.I18nAngular', []).filter('translate', function() {
   return function(key, obj) {
      return i18nAdapter.translate(key, obj);
   };
}).filter('number', function() {
   return function(value, options) {
      return i18nAdapter.formatNumber(value, options);
   };
}).filter('currency', function() {
   return function(value) {
      return i18nAdapter.formatCurrency(value);
   };
});
// .filter('date', function() {
// return function(value, format) {
// return i18nAdapter.formatDate(value, format);
// };
// });

i18nAdapter有自己的格式和过滤器,类似于角度,但在我们的例子中,我们可以使用角度提供的那些。