Angularjs日期格式在浏览器上不一致?

时间:2014-04-06 13:41:03

标签: javascript angularjs date

我有以下代码:

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

我有什么想法可以绕过这个?

2 个答案:

答案 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,则加两个)。问题解决了。