2016-12-30 1 views
0

私のデータベースでは、2016-12-30 00:30:10などのタイムスタンプを持っています。私は$httpモジュール経由で取得しています。だから、出力は次のようになりますデータが今のところ等しいangularJSでデータを出力する方法は?

 <tr ng-repeat="r in returns | orderBy:'-phdate'"> 
      <td ng-bind="r.product_name"></td> 
      <td ng-bind="r.quantity"></td> 
      <td ng-bind="r.username"></td> 
      <td ng-bind="r.phdate | dateToISO | date:'medium'"></td> 
     </tr> 

angular 
     .module('sampleApp') 
     .controller('ReportCtrl', ReportCtrl) 
     .factory('Reports', Reports) 
     .filter('dateToISO', dateToISO); 

    function ReportCtrl($scope, Reports) { 
     $scope.returns = []; 
     $scope.loadReturns = function() { 
      Reports.getReturns().then(function (response) { 
       $scope.returns = response.data; 
      }, function (error) { 
       console.log(error); 
      }) 
     } 
    } 

function dateToISO() { 
     return function (input) { 
      input = new Date(input).toISOString(); 
      return input; 
     }; 
    } 

とhtmlで:私の角度のコードでは、私はこれを持っている今、私がやりたいこと

enter image description here

、現在の日付に等しい日付だけを出力することです。たとえば、今日は12/30/2016で、その日付のデータのみを必要とします。

サーバ側で行う必要がありますか、角度で行う必要がありますか?どんな助けでも大歓迎です。

+0

を使用してそれを行うことができますより良いパフォーマンスのためにサーバー側から。 –

+0

'新しい日付( '2016-12-30 00:30:10')'を実行すると、文字列はローカルとして扱われます(正しく解析された場合はそうでないかもしれません)。タイムゾーンのオフセットが異なります。 – RobG

答えて

0

あなたは、両方の側からそれを行うが、データが多い場合、次に行うことができ、角度

Htmlの

<tr ng-repeat="r in returns | orderBy:'-phdate'"> 
     <td ng-bind="r.product_name"></td> 
     <td ng-bind="r.quantity"></td> 
     <td ng-bind="r.username"></td> 
     <td ng-bind="compareDate(r.phdate)"></td> 
    </tr> 

のJs

var compareDate = function (phdate) { 
     // Init time to zero 
     var curDate = new Date(); 
     curDate.setHours(0); 
     curDate.setMinutes(0); 
     curDate.setSeconds(0); 

     var pDate = new Date(phdate); 
     pDate.setHours(0); 
     pDate.setMinutes(0); 
     pDate.setSeconds(0); 

     if (curDate === pDate) { 
      return $filter('date')(pDate, 'medium'); 
     } 
    } 
0
$scope.compareDate = function(phdate){ 
     var dateObj = new Date(); 
     var month = dateObj.getUTCMonth() + 1; 
     var day = dateObj.getUTCDate(); 
     var year = dateObj.getUTCFullYear(); 
     var currentDate = day+ "" + month + "" + year; 

     var dateOb = new Date(phdate); 
     var monthData = dateOb.getUTCMonth() + 1; 
     var dayData = dateOb.getUTCDate(); 
     var yearData = dateOb.getUTCFullYear(); 
     var dataDate = dayData + "" + monthData + "" + yearData; 

     if(currentDate == dataDate){ 
      return true; 
     } else { 
      return false; 
     } 
    } 



<tr ng-repeat="r in returns | orderBy:'-phdate'" ng-if="compareDate(r.phdate)"> 
    <td ng-bind="r.product_name"></td> 
    <td ng-bind="r.quantity"></td> 
    <td ng-bind="r.username"></td> 
    <td ng-bind="r.phdate"></td> 
</tr> 
関連する問題