AngularJS-日期未在IE8中转换

AngularJS - dates not converting in IE8

本文关键字:转换 IE8 日期 AngularJS-      更新时间:2023-09-26

我有一个变量,它包含epoch格式的日期:

var myDate = "1385923147000";

我可以使用在最新的FF、Chrome和IE10+中轻松转换

myDate = new Date($filter('date')(myDate, 'yyyy-MM-dd'));
myDate.setHours(0,0,0,0);
console.log(myDate);

显示为:

Sun Dec 01 2013 00:00:00 GMT+0000 (GMT Standard Time)

这在FF、Chrome和IE10+中很好,但在IE8中,整个控制台.log转换没有执行,这导致我的应用程序失败。

如何以IE8+友好的方式进行转换??

请参阅下面的

基于这里的答案Date构造函数在IE中返回NaN,但在Firefox和Chrome 中有效

你可以让它像下面这样工作:

var app = angular.module('app', []);
app.controller('homeCtrl', function($scope, $log, $filter) {
  
 function parseISO8601(dateStringInRange)
    {
        var isoExp = /^'s*('d{4})-('d'd)-('d'd)'s*$/,
            date = new Date(NaN), month,
            parts = isoExp.exec(dateStringInRange);
        if (parts) {
            month = +parts[2];
            date.setFullYear(parts[1], month - 1, parts[3]);
            if (month != date.getMonth() + 1) {
                date.setTime(NaN);
            }
        }
        return date;
    }
  
 var myDate = "1385923147000";
   
  myDate = ($filter('date')(myDate, 'yyyy-MM-dd'));
  $scope.myDate = parseISO8601(myDate);
  $scope.myDate.setHours(0, 0, 0, 0);
  console.log($scope.myDate);
});
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
<div ng-app="app">
  <div ng-controller="homeCtrl">
    Date : {{myDate}}
  </div>
</div>