Javascript 角度日期筛选器不使用毫秒(字符串或数字)

Javascript 角度日期筛选器不使用毫秒(字符串或数字),javascript,angularjs,date,angularjs-filter,Javascript,Angularjs,Date,Angularjs Filter,我的观点是这样的: {{1288323623006 | date:'%d/%m/%Y %I:%M:%S %p'}} {{myDate | date:'%d/%m/%Y %I:%M:%S %p'}} 但它在我的控制台中抛出了一个错误,如下所示: 在控制器中将毫秒转换为日期对象时,如下所示: $scope.myDate = new Date(1288323623006); 在我看来: {{1288323623006 | date:'%d/%m/%Y %I:%M:%S %p'}} {{my

我的观点是这样的:

{{1288323623006 | date:'%d/%m/%Y %I:%M:%S %p'}}
{{myDate  | date:'%d/%m/%Y %I:%M:%S %p'}}
但它在我的控制台中抛出了一个错误,如下所示:

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

$scope.myDate = new Date(1288323623006);
在我看来:

{{1288323623006 | date:'%d/%m/%Y %I:%M:%S %p'}}
{{myDate  | date:'%d/%m/%Y %I:%M:%S %p'}}
然后它按预期显示
29/10/2010 06:40:23 AM

下面是一个在我的控制台中抛出上述错误的示例

我可以将日期转换为一个对象并将其传递给视图,但我对以这种方式管理它感兴趣,因为我不想使用这种方法

我的I18nAdapter中没有任何更改


有人有类似的问题吗?

因为您正在尝试解析非日期对象。您需要向过滤器传递一个日期对象,就像您在控制器中所做的那样。你应该这样做:

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

因为您正在尝试解析非日期对象。您需要向过滤器传递一个日期对象,就像您在控制器中所做的那样。你应该这样做:

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

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

$scope.myDate = new Date(1288323623006);
过滤器:

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

这将输出
29/10/2010 06:40:23 AM

编辑:

实际上,这也很有效:

{{ 1288323623006 | date: 'd/M/yyyy HH:mm:ss a' }}
所以你只是把日期格式弄错了,这就是为什么Angular不能把它转换成日期

请参阅以获取正确的格式

下面是一个JSFIDLE:

编辑2:

使用i18n,您是否尝试过以下方法

{{ 1288323623006 | date:'short'}}
或使用自定义格式:

{{ 1288323623006 | date:'d/M/yy h:mm:ss a' }}

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

$scope.myDate = new Date(1288323623006);
过滤器:

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

这将输出
29/10/2010 06:40:23 AM

编辑:

实际上,这也很有效:

{{ 1288323623006 | date: 'd/M/yyyy HH:mm:ss a' }}
所以你只是把日期格式弄错了,这就是为什么Angular不能把它转换成日期

请参阅以获取正确的格式

下面是一个JSFIDLE:

编辑2:

使用i18n,您是否尝试过以下方法

{{ 1288323623006 | date:'short'}}
或使用自定义格式:

{{ 1288323623006 | date:'d/M/yy h:mm:ss a' }}

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

事实证明,由于使用了本地化的过滤器,angular的过滤器无法工作

我所做的是通过在我们的
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
有自己的格式和过滤器,类似于angular,但在我们的例子中,我们可以使用angular提供的格式和过滤器。

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

事实证明,由于使用了本地化的过滤器,angular的过滤器无法工作

我所做的是通过在我们的
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
有自己的格式和过滤器,类似于angular,但在我们的例子中,我们可以使用angular提供的格式和过滤器。

在文档中说,您可以将这两种格式和过滤器作为stirng/数字或日期对象传递。您可以在questoinin中的plunkr示例中看到它的作用。文档中说,您可以将这两个毫秒作为stirng/number或Date对象传递。您可以在questoinI阅读文档中的plunkr示例中看到它的作用。这不是格式。我也试过你的格式。我说过,当一个对象在视图中被传递以进行过滤(格式化)时,它可以正常工作,但当毫秒被传递时它不工作,但它确实工作得很好。看看这个JSFIDLE:我知道它在小提琴上非常有效,我甚至在问题中加入了一个。问题是本地化库出现了一些问题,因此视图中传递的毫秒没有格式化编辑不起作用。我会尝试自定义过滤器,但即使它起作用,我仍在寻找问题的根源,而不是解决办法。是的,你的应用程序中似乎还有其他问题。这可能是对调试任务的嘲弄,需要查看完整的代码,所以我想我真的帮不了你。很抱歉,我看了文档。这不是格式。我也试过你的格式。我说过,当一个对象在视图中被传递以进行过滤(格式化)时,它可以正常工作,但当毫秒被传递时它不工作,但它确实工作得很好。看看这个JSFIDLE:我知道它在小提琴上非常有效,我甚至在问题中加入了一个。问题是本地化库出现了一些问题,因此视图中传递的毫秒没有格式化编辑不起作用。我会尝试自定义过滤器,但即使它起作用,我仍在寻找问题的根源,而不是解决办法。是的,你的应用程序中似乎还有其他问题。这可能是对调试任务的嘲弄,需要查看完整的代码,所以我想我真的帮不了你。很抱歉。