【问题标题】:How to output data in angularJS where data is equal to now?如何在数据等于现在的angularJS中输出数据?
【发布时间】:2017-05-14 09:23:10
【问题描述】:

所以在我的数据库中,我有像2016-12-30 00:30:10 这样的时间戳……我通过$http 模块得到它。在我的角度代码中,我有这个:

    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 中:

        <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>

所以输出看起来像这样:

现在我想做的是只输出与当前日期相等的日期。例如,今天是 12/30/2016,我只想要包含该日期的数据。

我应该在服务器端进行还是可以在 Angular 中进行?任何帮助将不胜感激。

【问题讨论】:

  • 你可以从两边做,但如果数据更多,那么从服务器端做以获得更好的性能。
  • 在执行new Date('2016-12-30 00:30:10') 时,字符串将被视为本地字符串(如果解析正确,则可能不是),因此对于每个具有不同时区偏移量的主机来说,将代表不同的时间。跨度>

标签: javascript angularjs date angularjs-filter


【解决方案1】:
    $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>

【讨论】:

    【解决方案2】:

    你可以使用角度来做到这一点

    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');
             }
        }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-07-28
      • 2019-08-08
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多