我有以下代码:
app.filter('myDateFormat',function myDateFormat($filter){
return function(text){
var tempdate= new Date(text.replace(/-/g,"/"));
return $filter('date')(tempdate, "dd-MM-yyyy HH:mm:ss");
}
});
从数据库中获取日期并将其置于正确的格式中。这是HTML:
<li ng-repeat="rows in latestqs | limitTo:12">
<a href="#pubres/{{ rows._id }}"> {{ rows.title }} </a>
<br>
<small>by {{ rows.group_name }} @ {{ rows._createdAt | myDateFormat }}</small>
</li>
这适用于chrome,但在IE9上,它显示为:
NaN-NaN-NaN-ONaN NaN:NaN:NaN
在chrome上,其中:
19-03-2014 14:00:19
我有什么想法可以绕过这个?
答案 0 :(得分:1)
在过滤器中使用momentjs,那里是最好的日期库...
app.filter('myDateFormat',function myDateFormat($filter){
return function(text){
var moment = moment(text);
if(moment.isValid) {
var tempdate= new Date(moment.value());
return $filter('date')(tempdate, "dd-MM-yyyy HH:mm:ss");
}
}
});
我还没有测试过这段代码..但是应该可以跨浏览器...
答案 1 :(得分:0)
我遇到了同样的问题。我有一个像这样的功能:
function(text) {
var d = new Date(text);
return d;
}
问题在于使用Date
构造函数。 IE9无法正确解析某些日期/时间字符串。我遇到问题的时间不到100毫秒。我注意到如果日期/时间戳小于100毫秒,则包括两位数而不是三位数。缺少第三位数导致IE9中断。所以,我添加了一个零(如果毫秒数小于10,则加两个)。问题解决了。