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:我知道它在小提琴上非常有效,我甚至在问题中加入了一个。问题是本地化库出现了一些问题,因此视图中传递的毫秒没有格式化编辑不起作用。我会尝试自定义过滤器,但即使它起作用,我仍在寻找问题的根源,而不是解决办法。是的,你的应用程序中似乎还有其他问题。这可能是对调试任务的嘲弄,需要查看完整的代码,所以我想我真的帮不了你。很抱歉。