我认为我有这样的事情:
{{1288323623006 | date:'%d/%m/%Y %I:%M:%S %p'}}
当我将毫秒转换为控制器中的日期对象时,如下所示:
$scope.myDate = new Date(1288323623006);
在我看来:
{{myDate | date:'%d/%m/%Y %I:%M:%S %p'}}
然后按预期显示29/10/2010 06:40:23 AM
。
以下是来自Angular Docs的示例,它会在我的控制台中抛出上述错误。
我可以将日期转换为对象并将其传递给视图,但我有兴趣以这种方式管理它,因为我不想使用这样的修复。
我的 I18nAdapter 中没有任何更改。
有人有过类似的问题吗?
答案 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
有自己的格式和过滤器,类似于角度,但在我们的例子中,我们可以使用角度提供的那些。