0

我有一个 JSON REST 服务,它返回带有开始日期的期间列表。如何将开始日期转换为 javascript 日期?

  [ {
      "periodId": 1234, 
      "startDate": [ 2011, 12, 24]
    }, 
    {
      "periodId": 5678, 
      "startDate": [ 2012, 12, 24]
    }
   ]

我在我的服务定义中使用 ngResource:

  angular.module('periodservice',['ngResource']).
     factory('Periods', function($resource) {
      return $resource('../rest/periods', {}, {
        query : {method : 'GET', params : {}, isArray : true}
      });
    });

控制器非常简单。

  function EksternVareRedigeringCtrl ($scope, Periods){

    $scope.periods = Periods.query(function(success, status, headers){
      $scope.msgf = success;
      console.log("this is the succsess);
    }, function(errors){
      $scope.msgf = errors;
      console.log("This is an error....." + ' ' + $scope.msgf.status);
    });

  }

现在我像这样显示日期,而不是将其转换为正确的日期:

   <div class="period">Period: {{period[0]}}-{{period[1]}}-{{period[2]}}</div>
4

2 回答 2

2

转换为 Javascript 日期:

new Date(period.startDate[0], period.startDate[1]-1, period.startDate[2])

请注意,我之所以使用period.startDate[1]-1这些月份,是因为月份从0(一月)开始,到11(十二月)结束。

要仅处理一次日期,请将以下代码段添加到您的success回调中:

angular.forEach($scope.periods, function (period) {
    period.startDate = new Date(period.startDate[0], period.startDate[1]-1, period.startDate[2]);
});
于 2013-02-06T14:18:25.730 回答
1

非常感谢。它完美地工作!

笔记。向 new Date() 提供数组时,您不必从月份数中减去 -1:

 new Date([2012, 12, 24]) === new Date(2012, 11, 24);
于 2013-02-07T09:56:34.797 回答